【发布时间】:2016-11-30 13:47:12
【问题描述】:
我正在尝试将消息从错误队列移回它源自的队列。 为此,我在错误队列上创建了一个消费者,然后将其发布到所需队列。 当我尝试这样做时,一半的已用消息会被发布,但另一半会被发送到 Error_Skipped Queue。
我尝试了很多事情都没有成功,所以我可能缺少一些简单的东西。
以下是我的代码示例:
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;
}
【问题讨论】:
-
你考虑过使用a shovel?
-
我看过一把铲子。但这有点基本。我想添加规则,这将允许我们仅将某些消息再次移回,其余的则在稍后阶段。
-
可以试试the mailing list
标签: c# rabbitmq masstransit