(mq)rabbitmq安装延时队列插件实现延时消息 2
上一篇《(mq)rabbitmq安装延时队列插件实现延时消息 1》文章中介绍了rabbitmq安装延时队列插件。本编将继续结合代码来实现延时队列(基于springboot项目)。
下方所有源代码均已上传到github: https://github.com/18438301593/rabbitmq ,注意看README.md
文档
配置文件
生产者消费者都一样
spring:
#给项目来个名字
application:
name: rabbitmq-consumer
#配置rabbitMq 服务器
rabbitmq:
host: 192.168.159.128
port: 5672
username: guest
password: guest
配置类
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* @author: Jiajiajia
* @Date: 2021/8/26
* @Description: 延时交换机(需要安装插件 rabbitmq_delayed_message_exchange)
*/
@Configuration
public class DelayExchangeConfig {
public DelayExchangeConfig(){
System.out.println("DelayExchangeConfig init");
}
/**
* 延时队列
* @return
*/
@Bean
public Queue delayQueue(){
return new Queue("delayQueue",true);
}
/**
* 延时队列交换机
* 注意这里的交换机类型:CustomExchange
* @return
*/
@Bean
public CustomExchange delayExchange(){
Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange("delayExchange","x-delayed-message",true, false,args);
}
/**
* 给延时队列绑定交换机
* @return
*/
@Bean
public Binding delayBinding(Queue delayQueue, CustomExchange delayExchange){
return BindingBuilder.bind(delayQueue).to(delayExchange).with("delay").noargs();
}
}
生产者
/**
* 测试 延时交换机
* @return
*/
@GetMapping("delay")
private String delay(@RequestParam("time") Integer time){
Map map = new HashMap();
map.put("id","1");
map.put("name","delay");
rabbitTemplate.convertAndSend("delayExchange","delay", map,
message -> {
message.getMessageProperties().setHeader("x-delay",time);
return message;
});
return "ok";
}
消费者
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @author: Jiajiajia
* @Date: 2021/8/26
* @Description: 延迟交换机 监听器
*/
@Component
public class DelayListener {
public DelayListener(){
System.out.println("DelayListener init ");
}
@RabbitListener(queues = "delayQueue")
public void receive(Map map){
System.out.println("delayQueue监听接收到消息:"+map);
}
}
猜你喜欢
official
1258
续介绍在rabbitmq容器中安装rabbitmq_delayed_message_exchange插件并使用的方法。安装插件下载与rabbitmq版本相符的插件,下载地址:https://github
official
1061
交换机),这个Exchange就是DLX死信交换机本质上也是一个普通交换机,和一般的Exchange没有区别,只不过它处理消息的特殊性,所以称之为死信。它能在任何的队列上被指定,实际上就是设置某个队列的
框架
1702
http://www.jiajiajia.club/weblog/blog/artical/88springboot(1)中已经创建了一个项目并且运行了起来,现在就把独立的jar包运行起来。1.在
weblog
5333
红黑树简介
红黑树(RedBlackTree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定
blog
java用数组实现优先级队列(小顶堆)
数据结构与算法
5623
,largestout)的行为特征。通常采用堆数据结构来实现。优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。操作:1.往队列中添加数据2.从队列中获取数据优先级队列通
工具
1570
finish后eclipse右下方会有提交进度出现如下则说明提交远程库成功刷新github,发现推送成功下一篇:eclipse中使用Git管理项目工程代码(3)将远程库的工程克隆到本地
blog
阻塞队列及其原理
java基础
4413
1.什么是阻塞队列阻塞队列是一个在队列基础上又支持了两个附加操作的队列。2.支持阻塞的插入方法:队列满时,队列会阻塞插入元素的线程,直到队列不满。1.支持阻塞的移除方法:队列空时,获取元素的线程会等
blog
mqtt 协议的概念和理解
mqtt协议
1597
一、概述二、设计规范三、主要特性四、协议原理mqtt客户端mqtt服务器一、概述 MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。