Nservicebus N服务总线和确认消息已成功接收

Nservicebus N服务总线和确认消息已成功接收,nservicebus,Nservicebus,我的模型让我从TCP连接获取数据,然后向NServiceBus“集线器”服务发送命令。(该中心将向所有订阅者发布数据。) TCP连接需要确认我收到了消息(或者它将重新发送消息)。在确认TCP消息之前,我想知道NServiceBus已经在途中安全地发送了消息(如果延迟不太长,我还想知道它到达了另一端(集线器服务)) NServiceBus中是否内置了任何类型的ACK系统?还是我只相信消息会成功发送?如果您使用事务性NServiceBus,您几乎可以知道消息会成功发送。即使集线器服务离线,情况也是如

我的模型让我从TCP连接获取数据,然后向NServiceBus“集线器”服务发送命令。(该中心将向所有订阅者发布数据。)

TCP连接需要确认我收到了消息(或者它将重新发送消息)。在确认TCP消息之前,我想知道NServiceBus已经在途中安全地发送了消息(如果延迟不太长,我还想知道它到达了另一端(集线器服务))


NServiceBus中是否内置了任何类型的ACK系统?还是我只相信消息会成功发送?

如果您使用事务性NServiceBus,您几乎可以知道消息会成功发送。即使集线器服务离线,情况也是如此,因为消息将以持久的方式排队等待传递

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

但是,在回答您的问题时,我不知道有任何内置功能可以做到这一点(Udi Dahan可能会在稍后更正我的问题),尽管这会涉及将另一条消息发送回调用方

此ack消息需要某种方式与最初发送的请求消息绑定,某种令牌或ID允许ack与原始调用匹配


希望这有帮助。

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