0

我正在尝试为 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 次迭代后),C 才会收到所有 5 条消息。

这是默认配置的预期行为吗?为了让消息在发布后立即发送和处理,我需要声明什么吗?

4

1 回答 1

0

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

于 2014-01-10T14:54:27.720 回答