gpt4 book ai didi

masstransit - 如何暂停 Mass Transit 处理队列中的消息

转载 作者:行者123 更新时间:2023-12-04 15:44:51 25 4
gpt4 key购买 nike

我有一个公共(public)交通服务总线,它正在监听多个队列并处理消息。我想以某种方式暂停新请求的处理并等待当前请求完成,以便我可以运行一些内务处理任务。

我个人的一些想法:

  • 我调查了服务总线BeforeConsumingMessage处理程序,虽然这将允许我检查数据库中的“暂停处理”标志,但我不确定我将如何实际暂停处理!
  • 我们正在使用 RabbitMQ - 我可以使用它来将队列置于挂起状态吗?
  • 我在这个主题上发现的太少了,以至于我想知道这是否是一种“反模式”,如果我想运行一些家政工作并相信任何部分完整的 sagas 会在服务总线启动备份。 (不过,不要选择这个选项)。

  • 所以我的问题是: 有没有办法指示服务总线完成对当前 sagas 的处理但不再从队列中获取任何消息?

    最佳答案

    彻底关闭 MT 服务将等待处理中的任何消息完全完成。为什么有时服务需要一段时间才能关闭。关闭服务是处理此问题的最佳方法,您确定 MT 不会拉任何新消息。

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

    如果您真的必须让服务继续运行,请调用 DisposeIServiceBus实例。这将做同样的事情,让当前消费者完成然后释放所有资源。完成维护后,您可以根据需要创建一个新的 IServiceBus 实例。

    关于masstransit - 如何暂停 Mass Transit 处理队列中的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216942/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com