rebbitmq延迟消息示例

rebbitmq延迟消息示例

	官方插件仅支持 >= 3.6x版本中支持。
	官方推荐插件 rabbitmq-delayed-message-exchange。
	官方文档:guthub,Rabbitmq插件列表。

安装

rabbitmq并未内置该插件,需要手动下载安装。已安装的插件可通过rabbitmq-plugins list查看。
下载后解压,将其拷贝至rabbitmq服务目录

(Linux Debian/RPM)/usr/lib/rabbitmq/plugins
(windows和其他系统)安装目录\rabbitmq_server-version\plugins

启用插件

cmd 安装目录\sbin
查看已安装列表 输入:

		 rabbitmq-plugins list 

启用插件 输入:

  rabbitmq-plugins enable rabbitmq_delayed_message_exchange

机制

安装插件后会生成新的Exchange类型x-delayed-message,支持延迟投递机制,接收到消息后不立即将消息投递至目标队列中,而是存储在mnesia(分布式数据系统)表中,检测消息延迟时间,达到可投递时间时将其通过x-delayed-type类型标记的交换机类型投递至目标队列。

java使用过程

声明x-delayed-message消息交换机

  • rabbitmq java client 实现

     Map<String,Object> args = new HashMap<String,Object>();
     args.put("x-delayed-type","direct");
     channel.exchangeDeclare("my-exchange","x-delayed-message",true,false,args);
    
  • spring rabbitmq template 实现

    Map<String,Object> aregs = new Hash<String,Object>();
    ares.put("x-delayed-type","direct");
    Exchange exchange = new CustomExchange("test.exchange","x-delayed-message",true,false,args) ;
    admin.declareExchange(exchange);
    

消息发送

  • rabbitmq java client 实现

      byte[] messageBodyBytes = "delayed pyload".getBytes("UTF-8");
      Map<String,Object> headers = new HashMap<String,Object>();
      headers.put("x-delay",5000);
      AMQP.BesiProperties.Builder pros = new AMQP.BasiProperties.Builder().hearders(heards);
      channel.basicPublish("test.exchange","test",props.build(),messageBobyBytes);
    
  • spring rabbitmq template 实现

      MessageProperties properties = new MessageProperties();
      properties.setHearder("x-delay",1000);
      template.converAndSend("test.exchage","test",new Message(body,properties));
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值