生产中, rabbitmq 一般用哪种模式

221 天前
 ericcen
1989 次点击
所在节点    程序员
11 条回复
kkk9
221 天前
根据业务,日常的一般用 Publish/Subscribe 足够了
mbeoliero123
221 天前
@kkk9 #1 大佬,问下,rabbit mq 怎么处理断连问题?
kkk9
221 天前
@mbeoliero123 #2 哪儿断连,客户端?消费者?搞重连机制,怎么处理就看你怎么写的了,mq 不处理这些。
gav1nvv
221 天前
@mbeoliero123 断连通常指的客户端断连,一般是 Client 处理的,通常会有重连次数或者等待时间。如果是 MQ crash 了通常需要使用集群。
mbeoliero123
221 天前
@gav1nvv @kkk9 好的,感谢大佬
UltraXiaoZi
221 天前
@mbeoliero123 两种情况 主要针对 rabbitmq 的 connection 和发送端 消费端没有关系(这都是在通信协议上层 定的应用层指令)

mq 正常的重启 或者 意外停机 rabbitclient 都是有自动重连功能的 默认没有次数限制 一直到 mq 起来为止

如果是 mq 内存溢出造成的 mq 主动断开 重连三次之后会关闭连接 后续只能重启应用才能连上

具体的重连实现 可以看一下 autoreconnectlistener
mbeoliero123
221 天前
@UltraXiaoZi #6 看网上基本的实现都是开个 goroutine ,每隔几秒去做心跳检测
gav1nvv
220 天前
@mbeoliero123 我司产品使用的 NTAS,有一次看官方包源码,默认底层维护了一个 Connection,每隔 2 秒进行心跳检测,默认为 60 次错误计数,2s*60=120 秒没有反应就会销毁 Connection ,不过会触发你实现的回调方法
mbeoliero123
220 天前
@gav1nvv #8 感觉有点鸡肋,想 rocket mq 和 kafka 这些,都是底层封装好的断连重连机制,rabbit mq 还需要感知这些,增加业务开发的负担
ericcen
220 天前
@kkk9 如果有好几个模块都用到 mq ,是不是不同模块各声明一个 queue 就好了?
ericcen
220 天前
是每个用户都声明一个队列吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/978913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX