C# MassTransit故障消息发布两次
我有一个正在抛出异常的消费者和一个具有以下订阅的总线:C# MassTransit故障消息发布两次,c#,.net,rabbitmq,masstransit,C#,.net,Rabbitmq,Masstransit,我有一个正在抛出异常的消费者和一个具有以下订阅的总线: ServiceBusFactory.New(sbc=>{ ... removed for brevity... sbc.Subscribe(s=>{ ... removed for brevity... var logger = LogManager.GetLogger("Faults"); s.Handler<IFault>(fault => l
ServiceBusFactory.New(sbc=>{
... removed for brevity...
sbc.Subscribe(s=>{
... removed for brevity...
var logger = LogManager.GetLogger("Faults");
s.Handler<IFault>(fault => logger.Error(JsonConvert.SerializeObject(fault)));
}
}
ServiceBusFactory.New(sbc=>{
…为简洁起见删除。。。
sbc.订阅(s=>{
…为简洁起见删除。。。
var logger=LogManager.GetLogger(“故障”);
s、 处理程序(fault=>logger.Error(JsonConvert.SerializeObject(fault));
}
}
当一个异常被抛出5次并继续发生错误时,我可以看到我的处理程序在两个不同的线程中被调用了两次
我不知道为什么,我希望它只发生一次
也许我的做法是错误的。我希望能够记录发生的故障,并能够重新处理它们。MassTransit或RabbitMQ是否已经内置了一些东西来处理这个问题?最初我使用的是MSMQ,它会自动将故障消息抛入相关的错误队列,但我看不到这些队列具有RabbitMQ。我不知道报告的这一问题。我会将此作为一个简单的案例复制,并将其提交到邮件列表中,或将问题与可复制的案例一起提交。我不知道报告的这一问题。我会将此作为一个简单的案例复制,并将其提交到邮件列表或邮件列表中b提交一个与可复制案例有关的问题。我不知道报告中存在与此相关的问题。我会将此作为一个简单案例复制,并将其提交到邮件列表或提交一个与可复制案例相关的问题。我不知道报告中存在与此相关的问题。我会将此作为一个简单案例复制,然后将其发送至邮件列表或提交一个问题和可复制的案例。我已确认,如位于以下地址的要点所示:
https://gist.github.com/phatboyg/8428147
故障事件仅在消费者连续五次故障后发布一次。这是NuGet使用RabbitMQ或MSMQ发布的MT 2.9.5。我已确认,如位于以下位置的要点所示:
https://gist.github.com/phatboyg/8428147
故障事件仅在消费者连续五次故障后发布一次。这是NuGet使用RabbitMQ或MSMQ发布的MT 2.9.5。我已确认,如位于以下位置的要点所示:
https://gist.github.com/phatboyg/8428147
故障事件仅在消费者连续五次故障后发布一次。这是NuGet使用RabbitMQ或MSMQ发布的MT 2.9.5。我已确认,如位于以下位置的要点所示:
https://gist.github.com/phatboyg/8428147
在使用者中连续五次失败后,故障事件仅发布一次。这是NuGet的MT 2.9.5使用RabbitMQ或MSMQ实现的。我相信我发现了问题……先前记录故障的尝试意味着为每个特定故障类型注册处理程序,而不是IFault对象。其中一些交换仍在RabbitMQ中注册。删除这些解决了问题。我相信我发现了问题…以前尝试记录故障意味着为每个特定故障类型注册一个处理程序,而不是IFault对象。其中一些交换仍在RabbitMQ中注册。删除这些解决了问题。我相信我发现问题…先前尝试记录故障意味着为每个特定故障类型注册一个处理程序,而不是IFault对象。其中一些交换仍然在RabbitMQ中注册。删除这些交换解决了问题。我相信我发现了问题…先前尝试记录故障意味着为每个规范注册一个处理程序IFI错误类型,而不是IFault对象。其中一些交换仍然在RabbitMQ中注册。删除这些交换解决了问题。这是2.9.5版本还是早期版本?Gist:Chris:2.9.0,我几周前用代码构建的。这是2.9.5版本还是早期版本?Gist:Chris:2.9.0,我几周前用代码构建的。这是2.9.5版本还是更早的版本?Gist:Chris:2.9.0,我几周前用代码构建的。这是2.9.5版本还是更早的版本?Gist:Chris:2.9.0,我几周前用代码构建的。我接受了你的Gist,并将其转化为单元测试,谢谢!它通过得很好,所以我知道这是配置的东西,但这是m的生命e我似乎找不到问题。我会继续挖掘,一旦我找到答案,我会发布一些东西,以便其他人可以从我的错误中吸取教训。所以,有趣的是,我发现,在上下文中有两个不同的消息Id。上下文之间的所有其他内容似乎都是一样的。对这意味着什么有什么想法吗?Id或MessageId?Id只是在内部用于跟踪队列中的每次读取,MessageId是传输上的序列化ID。上下文对象上的MessageId正在发生变化,所以听起来像是两条不同的消息,不是吗?我把你的要点变成了一个单元测试,谢谢!它通过得很好,所以我知道这是config的一部分,但对于生命来说对我来说,我似乎找不到问题。我会继续挖掘,一旦我找到答案,我会发布一些东西,以便其他人可以从我的错误中吸取教训。所以,有趣的是,我发现,在上下文中有两个不同的消息Id。上下文之间的所有其他内容似乎都是一样的。对这意味着什么有什么想法吗?Id或MessageId?Id只是在内部用于跟踪队列中的每次读取,MessageId是传输上的序列化Id。上下文对象上的MessageId是正在变化的,所以它听起来像两条不同的消息,不是吗?我把你的要点变成了一个单元测试,谢谢!它通过得很好,所以我知道它与配置有关,但与lif无关对于我来说,我似乎找不到问题。我会继续挖掘,一旦我找到答案,我会发布一些东西,以便其他人可以从我的错误中学习。所以,有趣的是,我发现,在上下文中有两个不同的消息Id。上下文之间的所有其他内容似乎都是一样的。对这意味着什么有什么想法吗?Id或消息Id?Id仅在内部用于trac