首页 > 其他分享 >RabbitMQ 延迟消息的实现——延迟消息插件

RabbitMQ 延迟消息的实现——延迟消息插件

时间:2023-12-04 18:11:51浏览次数:34  
标签:插件 delayed RabbitMQ 交换机 消息 message true 延迟

 步骤:

1. 把资料中的 rabbitmq_delayed_message_exchange-3.9.0.ez 复制到docker的mq容器的插件目录

2. 执行命令 docker exec -it mq rabbitmq-plugins enable rabbitmq_delayed_message_exchange

 

在Java代码中配置延迟交换机:(图的左边是注解方式,右下角是@Bean的方式)

 比之前多加了一个 delayed = "true"

 

生产者给MQ中的延迟交换机发送 延迟消息:

 

代码示例:

1. 用注解方式声明出 可以接收延迟消息的交换机 和  队列:

@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "delay.queue", durable = "true"),//创建队列(durable参数:队列要不要持久化)
exchange = @Exchange(name = "delay.direct", type = ExchangeTypes.DIRECT, delayed = "true"),//创建交换机。delayed=true:该交换机是延迟交换机,可以接收延迟消息
key = "hi" //RoutingKey 可以写多个,也可以写一个
))
public void listenDelayQueue(String msg) {
System.out.println("消费者接收到消息:" + msg);
}

2. 发送者给交换机发消息

@GetMapping("/mq08")
public void sendDelayMessage(){
//第四个参数:后置消息处理器
rabbitTemplate.convertAndSend("delay.direct", "hi", "hui~", new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setDelay(10000);//10s
return message;
}
});

log.info("消息发送成功");
}

 

标签:插件,delayed,RabbitMQ,交换机,消息,message,true,延迟
From: https://www.cnblogs.com/gagaya2/p/17875594.html

相关文章

  • RabbitMQ高可用集群的搭建部署(Centos7)
    高可用集群架构节点域名操作系统RabbitMQ版本Erlang版本iamdemo.tp-link.comCentos7.93.8.2823.3-2iamdemo2.tp-link.comCentos7.93.8.2823.3-2iamdemo3.tp-link.comCentos7.93.8.2823.3-2目前Centos7.9通过直接RPM包部署安装的版本最高支持到3.8.......
  • VS Code 常用插件
    基础插件1.Chinese(Simplified)(简体中文)LanguagePackforVisualStudioCode2.PathIntellisense3.Prettier-Codeformatter4.LiveServer5.koroFileHeader6.JavaScript(ES6)codesnippets7.AtomOneDarkTheme Vue相关插件1.VueLanguageFeatures......
  • RabbitMQ 消费者可靠性——业务幂等性
     如何保证业务是幂等的?方案一: 生产者、消费者都配置上setCreateMessageIds(true)。配好后,生产者给MQ发消息,消息就会带上自动生成的id。将来消费者拿到消息后,就可以获取到id,把id保存起来做唯一匹配 代码示例:packagecom.itheima;importorg.springframework.amqp.r......
  • RabbitMQ避免重复消费
    在Java中,可以使用消息队列来实现消息的异步处理,其中常用的消息队列有RabbitMQ、ActiveMQ、Kafka等。什么是幂等性?幂等性是指无论操作执行多少次,都是得到相同的结果,而不会产生其他副作用。在rabbitMQ中什么是消息重复消费?同一条消息在MQ中被消费多次出现重复消费的原因:生......
  • RabbitMQ 消费者可靠性——失败重试机制
     效果:消费者抛异常后,会本地重试,如果本地重试次数达到最大重试次数之后,直接给队列返回reject,队列收到后就会丢弃该消息,也就是策略的第一种但就这样把删了不太好,所以有了失败消息处理策略  第二种ImmediateRequeueMessageRecoverer:消费者抛异常后,会本地重试,如果本地重试......
  • 基于uQRCode封装的Vue3二维码生成插件
    标题:基于uQRCode封装的Vue3二维码生成插件摘要:本文介绍了一种基于uQRCode封装的Vue3二维码生成插件,可以在Javascript运行环境下生成二维码并返回图片地址。该插件适用于所有Javascript运行环境,并且支持微信小程序。本文将详细介绍该插件的使用方法,并给出一个基于Vue3的示例。关......
  • RabbitMQ 生产者可靠性——生产者重连
     我们配置的这个失败后的重连机制仅仅是发送者连接MQ失败的连接失败重试,如果消息发送抛出异常时不会重试,因为它只是连接失败的重试,不是消息发送的重试 spring:rabbitmq:host:192.168.88.130port:5672virtual-host:/hmallusername:hmallpassword......
  • 香港CN2优化线路带宽低延迟VPS服务器推荐
    原文:https://ichochy.com/posts/20231120.htmlCN2CN2,中国电信下一代承载网(ChinaNetNextCarryingNetwork)。CN2是一个多业务的承载网络,它能够支持数据、语音、视频多种业务融合的应用,为中国电信今后开展NGN业务打下了良好的基础。中国电信构建的CN2网络,力图奠定未来10-20年里中国......
  • RabbitMQ 消息转换器
     代码示例:1.引入依赖<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>2.在启动类中创建Beanpackagecom.itheima;importorg.springframework.amqp.rabbit.core.Rabbi......
  • RabbitMQ Java代码声明队列和交换机(方法一)
      交换机和队列的声明一般写在消费者模块里 代码示例:packagecom.itheima.config_RabbitMQ;importorg.springframework.amqp.core.*;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@Configuration......