博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot rabbitmq 补充
阅读量:6258 次
发布时间:2019-06-22

本文共 1223 字,大约阅读时间需要 4 分钟。

springboot rabbitmq 补充

关于分布式环境下多listener的解答

  • topic分布式环境下,启动两个服务端,这样就相当于有两个listener,数据会不会重复读取?
    答:不会,一个消息可以扔到多个的队列,但是只要进了队列,每个队列的消息只能被一个消费者消费

Queue和exchange的routingKey绑定与解绑的坑

  • 绑定a队列和exchange的routingkey是111,后来你又想把这个routingkey帮给b队列了,你一定要操作一下解绑的动作,你要是不操作,就会出现a队列绑定了111,b队列也绑定了111,这样按照这个routingkey发过来的数据就有两份被消费了

关于回调的AcknowledgeMode

clipboard.png

回调有如下方式,下面将分别实践

public enum AcknowledgeMode {    NONE,    MANUAL,    AUTO;}

关于回调官方文档上的说明

NONE = no acks will be sent (incompatible with channelTransacted=true). RabbitMQ calls this "autoack" because the broker assumes all messages are acked without any action from the consumer.

MANUAL = the listener must acknowledge all messages by calling Channel.basicAck().
AUTO = the container will acknowledge the message automatically, unless the MessageListener throws an exception. Note that acknowledgeMode is complementary to channelTransacted - if the channel is transacted then the broker requires a commit notification in addition to the ack. This is the default mode. See also txSize.

  • NONE
    可以称之为自动回调,即使无响应或者发生异常均会通知队列消费成功,会丢失数据。
  • AUTO
    自动检测异常或者超时事件,如果发生则返回noack,消息自动回到队尾,但是这种方式可能出现消息体本身有问题,返回队尾其他队列也不能消费,造成队列阻塞。
  • MANUAL
    手动回调,在程序中我们可以对消息异常记性捕获,如果出现消息体格式错误问题,手动回复ack,接着再次调用发送接口把消息推到队尾。ps:后面还需要错误消息堆积问题~~~

转载地址:http://ooxsa.baihongyu.com/

你可能感兴趣的文章
springmvc 4.x 处理json 数据时中文乱码
查看>>
Python练习(day7)
查看>>
网络工程师笔试题总结
查看>>
C# DataTable的詳細用法
查看>>
飞舞的蝴蝶
查看>>
codeforces 6A. Triangle
查看>>
对Map按key和value分别排序
查看>>
Async Performance: Understanding the Costs of Async and Await
查看>>
POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)
查看>>
Linux中select poll和epoll的区别
查看>>
Cocos2d-x之MenuItem
查看>>
远程共享文件夹
查看>>
[转] C/C++中printf和C++中cout的输出格式
查看>>
swift 如何实现点击view后显示灰色背景
查看>>
【Android】3.9 覆盖物功能
查看>>
MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
查看>>
搭建SolrCloud的详细步骤
查看>>
svn的安装与使用
查看>>
基于Linux下Iptables限制BT下载的研究
查看>>
Android对话框-中篇-之建立自己的对话框
查看>>