首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何暂停处理队列中的消息

如何暂停处理队列中的消息
EN

Stack Overflow用户
提问于 2013-11-26 12:20:16
回答 1查看 1.8K关注 0票数 7

我有一辆公共交通巴士,它可以监听多个队列并处理信息。我想以某种方式暂停对新请求的处理,并等待当前请求的完成,以便我能够运行一些内务管理任务。

我自己的一些想法:

  • 我已经研究了服务总线BeforeConsumingMessage处理程序,虽然这将允许我检查数据库中的“暂停处理”标志,但我不确定如何才能真正暂停处理!
  • 我们正在使用RabbitMQ --我可以用它将队列置于挂起状态吗?
  • 我在这个问题上的发现太少了,所以我想知道这是否是一种“反模式”,如果我想做一些家政工作,并且相信任何部分完整的服务在公共汽车重新启动时会被接上,我就应该停止我的地铁服务。(不过,不要选择这个选项)。

因此,我的问题是:是否有一种方法可以指示服务总线完成当前sagas的处理,但不接收队列中的任何消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 13:57:17

干净地关闭MT服务将等待进程中的任何消息完全完成。为什么有时服务需要一段时间才能关闭。关闭服务是处理这一问题的最佳方法,您可以肯定MT并没有拉动任何新消息。

如果您的sagas被序列化到备份存储(例如NHibernate ),那么状态将被保存,直到服务重新启动,并且sagas将恢复到在处理最后一条消息后留下的状态。你应该保持良好的状态。在任何维修期间,我们都会这样做。

如果您确实必须让服务运行,那么在Dispose实例上调用IServiceBus。这将做同样的事情,让当前的消费者完成,然后释放您的所有资源。一旦完成了维护,就可以根据需要创建一个新的IServiceBus实例。

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

https://stackoverflow.com/questions/20216942

复制
相关文章

相似问题

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