V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericcen
V2EX  ›  程序员

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

  •  
  •   ericcen · 207 天前 · 1969 次点击
    这是一个创建于 207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2023-10-06 16:11:18 +08:00
    kkk9
        1
    kkk9  
       207 天前
    根据业务,日常的一般用 Publish/Subscribe 足够了
    mbeoliero123
        2
    mbeoliero123  
       207 天前
    @kkk9 #1 大佬,问下,rabbit mq 怎么处理断连问题?
    kkk9
        3
    kkk9  
       206 天前
    @mbeoliero123 #2 哪儿断连,客户端?消费者?搞重连机制,怎么处理就看你怎么写的了,mq 不处理这些。
    gav1nvv
        4
    gav1nvv  
       206 天前
    @mbeoliero123 断连通常指的客户端断连,一般是 Client 处理的,通常会有重连次数或者等待时间。如果是 MQ crash 了通常需要使用集群。
    mbeoliero123
        5
    mbeoliero123  
       206 天前
    @gav1nvv @kkk9 好的,感谢大佬
    UltraXiaoZi
        6
    UltraXiaoZi  
       206 天前
    @mbeoliero123 两种情况 主要针对 rabbitmq 的 connection 和发送端 消费端没有关系(这都是在通信协议上层 定的应用层指令)

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

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

    具体的重连实现 可以看一下 autoreconnectlistener
    mbeoliero123
        7
    mbeoliero123  
       206 天前
    @UltraXiaoZi #6 看网上基本的实现都是开个 goroutine ,每隔几秒去做心跳检测
    gav1nvv
        8
    gav1nvv  
       206 天前 via iPhone
    @mbeoliero123 我司产品使用的 NTAS,有一次看官方包源码,默认底层维护了一个 Connection,每隔 2 秒进行心跳检测,默认为 60 次错误计数,2s*60=120 秒没有反应就会销毁 Connection ,不过会触发你实现的回调方法
    mbeoliero123
        9
    mbeoliero123  
       205 天前
    @gav1nvv #8 感觉有点鸡肋,想 rocket mq 和 kafka 这些,都是底层封装好的断连重连机制,rabbit mq 还需要感知这些,增加业务开发的负担
    ericcen
        10
    ericcen  
    OP
       205 天前
    @kkk9 如果有好几个模块都用到 mq ,是不是不同模块各声明一个 queue 就好了?
    ericcen
        11
    ericcen  
    OP
       205 天前
    是每个用户都声明一个队列吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3182 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:21 · PVG 20:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.