【问题标题】:Stopping the distributor from posting messages to a terminated worker阻止分发者向已终止的工作人员发布消息
【发布时间】:2010-07-23 15:16:03
【问题描述】:

我对 NServiceBus 分销商有一点小问题,这可能是我自己的无知,但这就是正在发生的事情 -

我有 -
一种。在 2 台机器上运行的 2 个工人(服务器)进程
湾。 1 分发者进程向工人发布消息
C。 1 客户端进程向分发者发布消息

现在一切正常,所有服务器都已启动并运行。

说,我现在关闭了 Worker 进程 #1,这样只有 Worker 进程 #2 正在运行。我现在等待一段时间,然后开始向分发者发布消息,我注意到总是有一些消息最终排队到工作进程#1(被关闭的进程)。

现在我想这是因为在关闭服务器之前已经向分发器指示它已准备好并且分发器正在响应这些控制消息。

我的问题是,有没有办法优雅地关闭连接到分发器的工作人员,通知它不应再向它排队。

谢谢。

【问题讨论】:

    标签: nservicebus nservicebus-distributor


    【解决方案1】:

    您可以通过向其发送 ChangeNumberOfWorkerThread 消息逐渐减少工作节点的工作线程数。在grid目录下有一个管理工具(我认为)可以使用,只需要进入distributor queue和每个worker queue即可。

    【讨论】:

    • 啊……这个人自己。谢谢乌迪。我确实尝试按照您的建议进行操作,但它并没有像我希望的那样工作。分发者仍然向线程数减少到 0 的工作人员发送一些消息。我想知道的是是否有一个“取消订阅”消息可以从工作人员发送以离开分发者组,这样就不会再有邮件是转发的吗?谢谢。
    • 如果工人在过去发送了分发者准备好的消息而分发者还没有发送消息,那么你所经历的那种行为就会发生。这是因为分发器使用 FIFO 队列来保存就绪工作器列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2021-06-09
    • 2016-01-25
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多