1

同じプロセス/AppDomain内の内部バスとしてRebusを使用しようとしています。

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

app.config で、Rebus がエンドポイント マッピング (別名メッセージの所有権) を検索できるように指定する必要があるようです。

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

実際、エラー メッセージがこれを説明していると思います。記憶が正しければ、状況を解決できる必要な C# と XML も提供されます ;)

于 2013-03-16T09:41:27.653 に答える