V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liangxiangdong
V2EX  ›  问与答

rabbitmq 使用问题

  •  
  •   liangxiangdong · 2020-09-08 14:08:35 +08:00 · 1444 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    rabbitmq 使用了 topic 模式后发现多个消费者是轮询的方式消费的,有大佬知道在不改变 topic 模式下这么让队列分发不同消费者而且不重复消费呢
    10 条回复    2020-09-10 15:52:35 +08:00
    QINFENGXULAI
        1
    QINFENGXULAI  
       2020-09-08 14:22:06 +08:00
    引入缓存机制解决重复消费问题
    liangxiangdong
        2
    liangxiangdong  
    OP
       2020-09-08 14:25:06 +08:00
    @QINFENGXULAI 有什么办法解决多个消费者同时消费呢,用 topic 模式 我发现 c1 和 c2 进行消费的时候是轮询的 不能同时消费
    TtTtTtT
        3
    TtTtTtT  
       2020-09-08 14:38:55 +08:00
    给每个消费者弄一个 Queue 就行了。
    miscnote
        4
    miscnote  
       2020-09-08 14:44:12 +08:00
    同时消费你需要 fanout exchange.
    miscnote
        5
    miscnote  
       2020-09-08 14:44:32 +08:00
    重复消费问题一般通过 message id 来解决。
    QINFENGXULAI
        6
    QINFENGXULAI  
       2020-09-08 14:59:19 +08:00
    @liangxiangdong RabbitMQ 不支持队列层面的广播消费,可以通过绑定多个队列实现
    jtwor
        7
    jtwor  
       2020-09-08 15:24:54 +08:00
    最近也在看 rabbitmq 但不太理解 mq 加入后 客户端到数据访问层是怎样的逻辑 例如以前是直接调接口 现在加入了 mq 是先 客户端->mq 服务端->各种接口->数据库 这样吗? 如果是这样 mq 服务端是不断通过建立 Channel 来区分具体业务?
    liangxiangdong
        8
    liangxiangdong  
    OP
       2020-09-10 15:42:02 +08:00
    @QINFENGXULAI @TtTtTtT @miscnote 感谢各位的解答
    liangxiangdong
        9
    liangxiangdong  
    OP
       2020-09-10 15:50:39 +08:00
    @jtwor rabbitmmq 的几种工作模式其实 exchanges 到 queue.包括最简答的 helloworld 模式都是用的 amqp 默认交换到队列的。
    我觉得区分应该使用的 exchanges 因为 exchanges 可以绑定队列
    liangxiangdong
        10
    liangxiangdong  
    OP
       2020-09-10 15:52:35 +08:00
    @jtwor 如果我有说的不对欢迎指正 毕竟我不是开发 只是个运维。生产中看到代码全是指定的 exchanges 通过路由 key 来指定那个业务区消费
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:01 · PVG 20:01 · LAX 04:01 · JFK 07:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.