请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

同个消息被多个消费者消费

老师我这边有两个问题请请教下:
1.如果我想同个消息,被多个消费者消费,是不是只要声明一个fanout类型的交换机,绑定多个队列,将这个消息发到这个交换机上即可;想问下老师通用做法是这样的么;
2.另一个问题,如果我想消费者在消费消息时,只有业务处理完成了,这个消息才被消费应该如何处理

正在回答

1回答

1.一般可以exchange绑定多个queue,这样路由通过通配符*#,多个消费者多个队列对应即可。fanout也是可以的,但是一般都是用多个queue绑定exchange。

2.如果想业务处理后再处理消息,可以消费者消费的时候把消息暂存到本地队列(内存),或者是数据库,然后你想要的逻辑走完后再从本地队列或者数据库里面取数据消费即可

0 回复 有任何疑惑可以回复我~
  • 提问者 目科将 #1
    老师的回复速度真是太太太迅速了!!!
    2,我考虑的是业务处理可能会挂(比如重启),但mq本身是可以自恢复地,如果把消息先消费掉了,那么这个消息没有被业务处理就丢失了,rabbitmq有没有一种机制,比如消费端先把消息内容"看"一下,通过消费内容处理业务后,再确定消费,把该条消息从队列中消费掉
    回复 有任何疑惑可以回复我~ 2019-06-23 11:39:42
  • 阿神 回复 提问者 目科将 #2
    没有。。。
    只能先把消息消费掉,不过可以转存到内存或者数据库里嘛,然后等你业务执行完想要消费的时候去内存对列或者数据库里查出来然后处理
    回复 有任何疑惑可以回复我~ 2019-06-23 11:42:01
  • 提问者 目科将 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-25 22:07:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信