2017-07-06 173 views
0

我有出版商:Masstransit。處理程序不確認消息

static void Main() 
    { 
     var bus = ServiceBusFactory.New(sbc => 
     { 
      sbc.UseRabbitMq(r => r.ConfigureHost(new MessageUrn("rabbitmq://localhost/test123"), c => { })); 
      sbc.UseJsonSerializer(); 
      sbc.EnableMessageTracing(); 
      sbc.ReceiveFrom(new MessageUrn("rabbitmq://localhost/test345")); 
     }); 

     bus.WriteIntrospectionToConsole(); 
     Console.WriteLine("bus endpoint {0}", bus.Endpoint.Address); 
     while(true) 
     { 
      Thread.Sleep(1000); 
      var msg = new TestMessage {Text = DateTime.Now.ToString()}; 
      Console.WriteLine("Publishing {0}", msg); 
      bus.Publish(msg); 
     } 
    } 

發佈隊列test123,收到隊列測試345

當我啓動消費與下面的代碼:

static void Main() 
    { 
     var bus = ServiceBusFactory.New(sbc => 
     { 
      sbc.UseRabbitMq(); 
      sbc.UseJsonSerializer(); 
      sbc.EnableMessageTracing(); 
      sbc.ReceiveFrom("rabbitmq://localhost/test345"); 
      sbc.Subscribe(subs => { subs.Handler<TestMessage>(msg => { Console.WriteLine(msg.Text); }); }); 
     }); 
     bus.WriteIntrospectionToConsole(); 
     Console.ReadLine(); 
    } 

消費者(用戶)處理消息並在控制檯上寫入。這部分一切都很好。但test123中的消息未被確認。它們數量不斷增加,它們處於就緒狀態。他們有些如何消耗,但不會消失。

我在做什麼錯了?

我不明白的另一個問題是,當我刪除所有隊列時,運行發佈者,它只創建test345和test345_error隊列。沒有test123隊列。如果發佈者工作一段時間,test345_error中的消息很少,而test345中沒有消息。當我啓動消費者時(見上面的代碼),它開始消費消息,它看起來好。爲什麼test345隊列中沒有消息?但不知何故,他們消耗(處理)?

Masstransit v2.10.0.0,RabbitMQ.Client v3.4.3.0。

在此先感謝。

+1

你的兩個程序應該有不同的ReceveFrom()地址。 –

回答

0

好吧,似乎通過解決這兩個隊列在發佈者是test123。沒有錯誤,沒有跳過。