오류 대기열을 원래 대기열로 다시 이동하려고합니다. 이 작업을 수행하기 위해 Error Queue에 Consumer를 생성 한 다음 Required Queue에 게시했습니다. 이것을 사용하면 소비 된 메시지의 절반이 게시되지만 나머지 절반은 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