rabbitmq 消费者和生产者模型中,生产者如何确认消费者消费了消息呢

2019-11-13 16:36:25 +08:00
 Acoolda
rabbitmq 中有 ack 确认,但是这只是让 rabbitmq 知道自己队列的消息被消费,生产者好像没办法知道,目前我自己用比较土的办法实现的,有没有 rabbitmq 自带的机制实现
我用的 pika
7780 次点击
所在节点    Python
32 条回复
Acoolda
2019-11-14 08:37:35 +08:00
@lalalla 感谢,我去尝试一下
Acoolda
2019-11-14 08:39:17 +08:00
@xuanbg 可以可以
Acoolda
2019-11-14 08:43:23 +08:00
@AngryMagikarp 理论上生产者是不需要关心,工厂里的工人不需要知道自己生产的东西市场上卖的怎样,但是老板需要知道啊,工人就是生产者,老板就是整体应用
chengxy
2019-11-14 09:04:55 +08:00
C137 更新了
Acoolda
2019-11-14 09:05:03 +08:00
@Vegetable 鞋子工厂对外面买鞋子的消费者来说是生产者,但是工厂里面只有流水线工人才是正真的生产者,工厂里面还有老板,流水线工人不用关心市场上鞋子卖的怎么样,但是老板需要及时知道鞋子在市场上卖的怎么样?买鞋的人怎么评价这个鞋子
p1094358629
2019-11-14 09:11:47 +08:00
可以再封装,其实就是 消费者放出一个回调函数,我司基于这个原理封装了框架
kkkkkrua
2019-11-14 09:19:21 +08:00
其实就是 rpc..只是这个过程异步化了
min
2019-11-14 09:26:50 +08:00
lihongjie0209
2019-11-14 09:27:58 +08:00
@Acoolda #23 消费者单独写一张进度表不就好了
Acoolda
2019-11-14 09:35:33 +08:00
@kkkkkrua 嗯,感谢
@lihongjie0209 也可以吧,我的想法是如果能直接反馈可能会更好些吧
@min 明白了
lihongjie0209
2019-11-14 09:42:49 +08:00
@Acoolda #30 直接反馈不现实,
因为你不知道消费者的需要多长时间来消费,
那么你的前端连接就需要一直保持
那么一定存在一些任务, 直到连接超时都没能完成, 你直接反馈的数据就会丢失(假如你不写入进度表)
如果用户想再次查看当前任务的进度, 那你就没有数据用于显示了

如果你直接反馈之后写入进度表防止连接超时, 那么这个动作最好的消费者那端进行, 没必要再回调生产者了
Acoolda
2019-11-14 10:11:02 +08:00
@lihongjie0209 嗯,谢谢提醒,具体各种其他问题我还没想透彻

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

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

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

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

© 2021 V2EX