2017-07-06 131 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。没有错误,没有跳过。