我是 NServiceBus 的新手,但目前使用它与 SQL Server Transport 在三台机器之间发送消息:一台属于名为 的端点Server,两台属于名为 的端点Agent。这按预期工作,发送到Agent端点的消息通过默认循环分发到两台机器之一。
我现在想添加一个新的端点PriorityAgent,用一个不同的队列和两台额外的机器调用。虽然所有端点都使用相同的消息类型,但我知道每条消息在发送之前应该在哪里处理,所以通常我可以选择正确的目标端点,然后相应地处理消息。
但是,我需要构建一个特殊情况:如果PriorityAgent端点上的所有机器当前都关闭了,那么通常应该发送到那里的消息应该被发送到Agent端点,以便可以毫不拖延地处理它们。另一方面,如果Agent端点上的所有机器当前都已关闭,Agent则不应向 发送任何消息PriorityAgent,它们可以简单地等待Agent机器返回。
我一直在研究实现这一点的正确方法,但没有看到很多结果。我想这不是一个闻所未闻的场景,所以我的假设是我正在寻找错误的东西或以错误的方式思考这个问题。尽管如此,我还是想出了几个潜在的解决方案:
单独跟踪
PriorityAgent机器的心跳,如果这些心跳停止,则添加一个修改器或行为以将传出PriorityAgent消息的目的地更改到Agent端点。给
PriorityAgent消息一个短暂的过期时间,并以某种方式处理过期时间以将消息重定向到Agent端点。我不确定这是否真的可行。
这些解决方案之一是在正确的轨道上,还是我完全不在基地?