当前位置:   article > 正文

Rabbit延迟队列实现---插件实现

Rabbit延迟队列实现---插件实现

自行百度如何安装rabbitmq

  1. 点击链接下载rabbitmq插件
  2. 找到rabbitmq_delayed_message_exchange,点击Releases
    在这里插入图片描述
  3. 找到自己mq版本对应下载
    在这里插入图片描述
  4. 移动到rabbitmq目录下plugins
    在这里插入图片描述
  5. 执行命令rabbitmq-plugins.bat enable rabbitmq_delayed_message_exchange安装插件
    在这里插入图片描述
  6. 此时就会出现x-delayed-message

在这里插入图片描述

  1. 创建一个交换机
    在这里插入图片描述
  2. 引入maven
        <!--2. rabbitmq-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  1. yml配置
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: 账号
    password: 密码
    virtual-host: 路径 默认是/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 定义一些参数
public class RabbitMqConstant {
    //类型
	public static final String DELAY_TYPE = "x-delayed-message";
    //交换机名称
	public static final String EXCHANGE_TEST = "exchange.test";
    //路由
	public static final String ROUTING_TEST = "routing.test";
	//队列
	public static final String QUEUE_TEST = "queue.test";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 代码块
@Service
public class TestServiceImpl implements TestService {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Override
    public void send() {
        HashMap<Object, Object> socketData = new HashMap<>();
        socketData.put("message", "收到消息");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        socketData.put("date", sdf1.format(new Date()));
        rabbitTemplate.convertAndSend(RabbitMqConstant.EXCHANGE_TEST, RabbitMqConstant.ROUTING_TEST, new Gson().toJson(socketData), a -> {
            a.getMessageProperties().setDelay(2000);//延迟2秒
            return a;
        });
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(RabbitMqConstant.QUEUE_TEST),
            key = RabbitMqConstant.ROUTING_TEST,
            exchange = @Exchange(value = RabbitMqConstant.EXCHANGE_TEST, type = RabbitMqConstant.DELAY_TYPE)
    ))
    public void responseToUser(String content) {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        String format = sdf1.format(new Date());
        System.out.println("接受到消息时间----" + format);
        HashMap<Object, Object> socketData = new Gson().fromJson(content, new TypeToken<HashMap<Object, Object>>() {
        }.getType());
        String date = String.valueOf(socketData.get("date"));
        System.out.println("发送消息时间----" + date);
        System.out.println("消息----" + content);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/574977
推荐阅读
相关标签
  

闽ICP备14008679号