2012-04-13 147 views
2

我正在构建一个使用NSerivceBus的系统,应该只在特定时间段内将消息发送到远程处理程序。到目前为止,我设法将所有消息放在一个处理队列中,并从那里检查远程处理程序的可用性,如果处理程序不可用,则不会通过边界发送消息。要做到这一点我使用NServiceBus稍后处理消息

Bus.HandleCurrentMessageLater() 

但NSB将继续尝试后。它不像其他听众将在几分钟内启动并运行,但它可能有几小时的停机时间窗口,所以这不是很有效。

想知道是否有办法让总线在一段时间后重试消息,或者不要在下次重试前重试并等待一段时间。我将使用Sagas,只是简单的命令/处理程序消息。

回答

5

您可以使用Bus.Defer在3.0版本中经过一定时间后返回消息。

+0

hello udi,我正在使用nservicebus 5.0和5.0 bus.createinstance <>方法已过时,因此为了进行同步调用,我在4.6.5版中使用了bus.createinstance,但现在我无法迁移我的代码到更高版本,让我知道什么是可能的方式发送答复回相同的请求,我想要的呼叫应该是同步的。 – Friyank 2015-04-04 09:39:18

+0

CreateInstance被废弃的原因是因为它并不是真的需要 - 您可以使用Bus.Reply (lambda创建消息)。 – 2015-04-06 05:50:39