作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MassTransit 示例程序,它发布 1 条正文为当前时间戳的消息。然而,奇怪的是,消费者总是有 5 次被调用。
程序如下:
public class MassTransitTest
{
static void Main(string[] args)
{
var bus = ServiceBusFactory.New(x =>
{
x.UseRabbitMq();
x.ReceiveFrom("rabbitmq://localhost/test");
x.Subscribe(s => s.Consumer(() => new MyConsumer()));
});
bus.Publish<IMyObject>(new MyObject { Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssffff"), CorrelationId = Guid.NewGuid() });
}
}
public interface IMyObject : CorrelatedBy<Guid>
{
string Timestamp { get; }
}
public class MyObject : IMyObject
{
public string Timestamp { get; set; }
public Guid CorrelationId { get; set; }
}
public class MyConsumer : Consumes<IMyObject>.All, IBusService
{
private IServiceBus bus;
private static int count = 0; // to gauge the call to handler
public void Consume(IMyObject message)
{
count++;
Console.WriteLine("Encounter message " + count);
Console.WriteLine(message.Timestamp);
}
public void Start(IServiceBus bus)
{
this.bus = bus;
}
public void Stop()
{
}
public void Dispose()
{
bus.Dispose();
}
}
Encounter message 1
201410131349034661
Encounter message 2
201410131349034661
Encounter message 3
201410131349034661
Encounter message 4
201410131349034661
Encounter message 5
201410131349034661
最佳答案
您不应在 Consumer 中处置总线,也不应成为 IBusService。 .Dispose 方法可能抛出异常,导致消费者重试。
您还应该在程序退出之前等待,并在完成处理后调用 bus.Dispose。
IBusService start 没有调用,因为消费者不是总线服务,所以总线成员始终为空。
关于masstransit - 发送给 MassTransit 消费者的重复消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332270/
我是一名优秀的程序员,十分优秀!