已成功接收NServiceBus并确认消息

时间:2011-10-21 20:32:36

标签: nservicebus

我的模型让我从TCP连接获取数据,然后将命令发送到NServiceBus“Hub”服务。 (该Hub将向所有订户发布数据。)

TCP连接需要ACK(确认)我收到消息(或者它会重新发送消息)。在我确认TCP消息之前,我想知道NServiceBus已经安全地发送了消息(如果延迟时间不长,我也想知道它到达另一端(Hub服务) )。

NServiceBus中是否有任何类型的ACK系统?或者我只相信该消息会成功发送?

2 个答案:

答案 0 :(得分:1)

您可以手动添加中央数据库(可从两个客户端访问)并维护消息的状态。 比如说如果你从一个客户端发送消息,只需在中央数据库中添加一行即可。 然后在第二个客户端收到消息时,更新该行以确认已收到消息。

答案 1 :(得分:0)

如果您使用事务性NServiceBus,您几乎可以知道该消息将成功传递。即使集线器服务处于脱机状态也是如此,因为消息将以持久的方式排队等待交付。

出于这个原因,等待来自服务的某种ACK实际上可能适得其反,并且可能不必要地中断处理。

然而,在回答你的问题时,我不知道有任何内置功能可以做到这一点(Udi Dahan可能会在以后纠正我),尽管这会涉及另一条消息被发送回调用者。

此ack消息需要一些绑定到最初发送的请求消息的方法,某种令牌或ID将允许ack与原始呼叫匹配。

希望这有帮助。