我試圖將消息從錯誤隊列移回到它起源的隊列。 爲此,我在錯誤隊列上創建了一個使用者,然後將其發佈到必需隊列中。 當我嘗試這樣做時,消費消息的一半被髮布,但另一半被髮送到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