我试图将消息从错误队列移回到它起源的队列。 为此,我在错误队列上创建了一个使用者,然后将其发布到必需队列中。 当我尝试这样做时,消费消息的一半被发布,但另一半被发送到Error_Skipped队列。MassTransit RabbitMQ将错误队列上消费的消息的一半移动到Error_Skipped队列
我已经尝试过许多事情没有成功,所以它可能是简单的,我失踪了。
这里是我的代码示例:
public class ClaimsMessage
{
public string Description { get; set; }
public DateTime Date { get; set; }
public bool Handled { get; set; }
}
public class ClaimsMessageErrorConsumer : IConsumer<Fault<ClaimsMessage>>
{
public async Task Consume(ConsumeContext<Fault<ClaimsMessage>> context)
{
try
{
await context.Publish<ClaimsMessage>(context.Message.Message);
}
catch (Exception e)
{
string error = e.Message;
}
}
}
public static IBusControl CreateClaimsErrorConsumerBus(string endPoint)
{
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint(host, endPoint, e =>
{
e.Consumer(() => new ClaimsMessageErrorConsumer());
});
});
return busControl;
}
你有没有考虑使用[铲子?](https://www.rabbitmq.com/shovel.html) – stuartd
我看过一铲。但它有点基础。 我想添加规则,这将允许我们只能将某些消息再次移回,稍后再移回其他消息。 –
可以试试[邮件列表](https://groups.google.com/forum/#!forum/masstransit-discuss) – stuartd