首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放运行时间稍长的消费工作- RabbitMQ

缩放运行时间稍长的消费工作- RabbitMQ
EN

Stack Overflow用户
提问于 2018-04-20 06:00:52
回答 2查看 1.4K关注 0票数 0

我正在将RabbitMQ架构到我们的解决方案中,我很好奇如何有效地处理和确认消息,同时仍然在消费者代码中执行从5-10秒不等的“真实”工作。(比样本钻研的工作更多)。

上面是我想要处理的一个例子。我的twitter.tweet_cmd_q队列中的一条消息,其中包含消息正文中所需的所有参数,用于使用者发出实际的Twitter请求,并将这些结果保存到DB中。

然而,我在这里遇到了两个问题:

  1. 我将每分钟处理数千条记录--我不可能花5-10秒的时间来确认这条信息。消费者代码在确认消息之前处理所有所需的工作是“正常的”吗?(也就是说,我可以看到消息被破坏了,并将实际的工作抛到另一个线程中进行处理。-尽管这将需要它自己的“线程”管理形式,这样系统就会承受太多的负载)。
  2. 在这种涉及查询数据并将其保存到DB的情况下,RPC调用对我有好处吗?
  3. 处理这种可伸缩性的最佳方法是创建更多用于循环处理的工作实例吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-20 17:17:13

  1. 是的,消费者代码在破坏消息之前做它需要的所有事情是正常的。这就是如何对其他员工管理消息可见性的方法。
  2. 不,保持简单,只要做你需要做的在工人身上。
  3. 某种程度上来说,这不是真正的循环,只是创造更多的工人,让他们订阅队列。每个工作人员将轮询队列,查找消息并在其上执行。
票数 3
EN

Stack Overflow用户

发布于 2018-04-22 14:14:52

RabbitMQ团队监视邮寄名单,有时只回答StackOverflow上的问题。

罗布的回答很棒,我只是想补充一下:

消费者代码在确认消息之前处理所有所需的工作是“正常的”吗?

如果您在处理该消息之前确认了该消息,并且您的使用者崩溃或其他情况下未完成其任务,则该消息将丢失。这是只在你的工作完成后才进行修改的主要原因。您可以在这里找到相关文档:https://www.rabbitmq.com/confirms.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49934981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档