从命令处理程序发布NServiceBus事件

时间:2014-01-10 12:12:52

标签: nservicebus publish-subscribe nservicebus4

我正在尝试为NServiceBus解决方案实现一个简单的POC。 所以我实现了3个端点,让我们称它们为A,B和C. A是自托管在控制台应用程序中,B和C是NSB主机。 在A我发送一个命令DoFoo,在B我处理DoFoo并在处理程序内部我发布了几个BarOccurred类型的事件,如下所示:

for (int i=0; i<5; i++)
{
  Bus.Publish(new BarOccurred);
  Thread.Sleep(1000);
}

在C中,我通过向控制台写入Bar来订阅和处理它。

我希望每次B发布时都会在C中处理消息(即每秒)。但是我看到的行为是,只有在命令处理程序退出之后(在5次迭代之后),才会收到所有5条消息。

这是默认配置的预期行为吗?是否有任何我需要声明的内容,以便在发布消息后立即发送和处理消息?

1 个答案:

答案 0 :(得分:0)

Bus.Publish在单个事务中,并在所有消息发送后提交。我会看看是否将所有消息打包在一个Bus.Publish(IMesssage [])中可能满足您的需求。这在电线上变为1条消息。