1

我正在尝试将 Rebus 用作同一进程/AppDomain 中的内部总线。

我修改了Pub/Sub 示例并添加了 SameProcessHandler:

class SameProcessHandler : IHandleMessages<string>
{
    public void Handle(string message)
    {
        Console.WriteLine("Same Process: {0}", message);
    }
}

巴士启动后新增订阅:

Configure.With(adapter)
  .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
  .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
  .Subscriptions(s => s.StoreInXmlFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "rebus_subscriptions.xml")))
  .CreateBus()
  .Start();

adapter.Bus.Subscribe<string>();

最后添加了目标队列(不确定是否需要):

<rebus inputQueue="pubsubsample.publisher.input" 
  errorQueue="pubsubsample.publisher.error" 
  workers="1" maxRetries="5">
  <endpoints>
    <!-- brute force ownership - all core .NET types are owned by our publisher :) -->
    <add messages="mscorlib" endpoint="pubsubsample.publisher.input"/>
  </endpoints>
</rebus>

但是我收到错误“Rebus 当前未配置端点映射机制”,我应该在订阅时指定目的地或更改配置。我宁愿使用配置,但如何?

4

1 回答 1

0

似乎您需要指定 Rebus 可以在您的 app.config 中查找端点映射,即消息所有权:

.MessageOwnership(o => o.FromRebusConfigurationSection())

实际上,我认为错误消息解释了这一点,如果我没记错的话,它甚至提供了可以解决这种情况的必要 C# 和 XML ;)

于 2013-03-16T09:41:27.653 回答