0

NServiceBus 入門 - Code Firstの記事に従いましたが、クライアント アプリケーション (NServiceBusDemo.Client) からメッセージを送信しようとすると、次の例外が発生します。

2013-05-27 12:27:50,514 [7] ERROR NServiceBusDemo.Client.SendOrder [(null)] <(null)> - エンドポイントの起動時に問題が発生しました。Common.Logging.ConfigurationException: 宛先キュー 'server@jasper' が見つかりませんでした。構成ファイルの UnicastBusConfig セクションの MessageEndpointMappings で、この種のメッセージ (NServiceBusDemo.Messages.Commands.PlaceOrder) の宛先を誤って構成した可能性があります。指定されたキューがまだ作成されていないか、削除されている場合もあります。- --> NServiceBus.Unicast.Queuing.QueueNotFoundException: 次のアドレスにメッセージを送信できませんでした: [server@jasper] ---> System.Messaging.MessageQueueException: キューが存在しないか、メッセージを実行するための十分な権限がありません手術。

NServiceBus を使用してから長い時間が経ちましたが、私が行ったメッセージ エンドポイント マッピング (チュートリアルには記載されていません) を追加する必要があったことを思い出します。

  <UnicastBusConfig ForwardReceivedMessagesTo="audit">
    <MessageEndpointMappings>
      <add Messages="NServiceBusDemo.Messages" Endpoint="NServiceBusDemo.Server"/>
    </MessageEndpointMappings>
  </UnicastBusConfig>

メッセージ キュー コンソールを見ると、次のプライベート キューが作成されています。

  • nservicebusdemo.client
  • nservicebusdemo.client.retries
  • nservicebusdemo.server
  • nservicebusdemo.server.retries
  • nservicebusdemo.server.timeouts
  • nservicebusdemo.server.timeoutsdispatcher
4

2 に答える 2

3

問題は、記事のコードがエンドポイント名「サーバー」を明示的に指定していたことです (これは私が変更しました)。@UdiDahan が Twitter で指摘したように、これは MessageEndpointMappings よりも優先され、記事でマッピングが言及されなかった理由です。

エンドポイントを指定しないようにクライアント コードを更新したため、app.config の設定を使用します。

public class SendOrder : IWantToRunAtStartup
{
    public IBus Bus { get; set; }

    public void Run()
    {
        string product;
        while ((product = Console.ReadLine()) != "q")
        {
            Bus.Send(new PlaceOrder() { Product = product });
        }          
    }

    public void Stop()
    {

    }
}
于 2013-05-27T13:09:34.353 に答える