2017-08-24 13 views
1

私はRabbitMQを使ってメッセージキューに正常に公開したメッセージを取得しようとしています。私がやっていないことは何をする必要があります。以下はサンプルコードですか?Rebus RabbitMQを購読することができません

static async Task MainSubscribeAsync() 
     { 

      var connection = "amqp://jhgj67546:[email protected]"; 

      using (var activator = new BuiltinHandlerActivator()) 
      { 
       activator.Register(() => new WagonHandler()); 

       var bus = Configure.With(activator) 
        .Logging(l => l.ColoredConsole()) 
        .Transport(t => t.UseRabbitMq(connection, "wagon_v1") 
         .ExchangeNames(directExchangeName: "WamosExchange")) 
        .Start(); 

       await activator.Bus.Subscribe<Wagon>(); 

       Console.WriteLine("Done"); 
      } 
     } 

ハンドラクラスは、この

class WagonHandler : IHandleMessages 
    { 
     public async Task Handle(Wagon message) 
     { 
      Console.WriteLine($"Token {message.Token}"); 
      Console.WriteLine($"WagonId {message.WagonId}"); 
     } 
    } 

答えて

1

このコード

static async Task MainSubscribeAsync() 
{ 

    var connection = "amqp://jhgj67546:[email protected]"; 

    using (var activator = new BuiltinHandlerActivator()) 
    { 
     activator.Register(() => new WagonHandler()); 

     var bus = Configure.With(activator) 
      .Logging(l => l.ColoredConsole()) 
      .Transport(t => t.UseRabbitMq(connection, "wagon_v1") 
       .ExchangeNames(directExchangeName: "WamosExchange")) 
      .Start(); 

     await activator.Bus.Subscribe<Wagon>(); 

     Console.WriteLine("Done"); 
    } 
} 

は、バスを開始し、サブスクリプションを確立し、BuiltinHandlerActivatorが配置されているので、すぐにシャットダウンするようになります。

これは、あなたが幸運であると、おそらくいくつかのメッセージを受け取ることができことを意味するが、ほとんどの場合、あなたはおそらく、あなたの代わりに、アプリケーションの起動時にバスを設定し、それを維持する必要があり

を:)はありません(the wiki page about Rebus' instance policiesで説明されているように)アプリケーションの存続期間全体にわたって単一インスタンスとして、アプリケーションがシャットダウンしているときにのみ廃棄します。

関連する問題