Rabbitmq 记录

  1. queue 可以和同一个 exchange bind 多个 routingKey
  2. qos (prefetchCount) 的意义:prefetchCount 数量表示不 ack 一次请求获取的 message 数量,可以增加吞吐量
  3. 消费者只和队列有关系,和 routingKey exchage 没有关系。
  4. exchage 负责把消息放入指定队列,和消费者没有关系
  5. 独占队列表示这个队列只能被此 connection 独占
  6. 队列分发消息使用轮询机制,也就是说如果有多个消费者消费同一个队列,消费者时轮询接收到消息的
  7. 默认情况下,如果 exchange 无法处理该消息会丢弃消息,如果想要知道是否已处理,请使用用 mandatory 参数发布消息。开启 mandatory 后,broker 会发送一个 basic.return 给发送者
  8. rabbitmq 没有支持 immediate 参数,immediate = true 是指发送消息时是否判断有消费者能处理该消息,如果没有则立即丢弃。如果要实现类似功能请使用 DLX (死信队列)
  9. 发布者开启 confirm 模式的 java 方法:
final AMQP.Confirm.SelectOk selectOk = channel.confirmSelect();
channel.basicPublish(EXCHANGE, ROUTE_KEY, true, false, null, message.getBytes());
final boolean b = channel.waitForConfirms();
....

这也是事务的替代方式。因为开始事务模式会降低250倍的性能。channel.waitForConfirms(); 方法执行时会阻塞。

  1. rabbitmq 不仅支持队列整体设置消息过期时间还支持对每条消息设置过期时间,如果两个同时设置,则取两个中最小的
  2. rabbitmq 支持队列过期,当没有消费者时,到期后会自动删除队列
  3. 死信队列用于延时的注意事项:

当后面消息的过期时间小于前面的消息时,死信时还是按顺序放入其他队列

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • RabbitMQ的学习笔记 关于RabbitMQ的几个角色如下: 关于名词的通俗解析: 首先我们肯定知道Rabbi...
    ChinaXieShuai阅读 1,550评论 0 2
  • 0 相关源码 1 你将学到 如何保证消息百分百投递成功 幂等性 如何避免海量订单生成时消息的重复消费 Confir...
    JavaEdge阅读 1,484评论 0 9
  • 在京东阅读上看到的,点进去看了下,发现作者也是位世界记忆大师,便来了兴趣。方法基本与袁老师教过的一样,书中提供了很...
    文魁大脑杜星默阅读 632评论 0 49
  • 1.两个人在一起时间久了,连思念都没有感觉了,情话都变成了日常,一切习以为常,不再悸动,不再波折,就像左手牵右手,...
    卓子lonuo阅读 198评论 0 1
  • 宫崎骏曾说: 因为你,我愿意成为一个更好的人,不想成为你的包袱,因此发奋努力,只是为了想要证明我足以与你相配。 所...
    平淡是真Bb阅读 197评论 1 3

友情链接更多精彩内容