在RabbitMq中使用CircuitBreaker时,如下所示:
sbc.ReceiveEndpoint(host, "IDocumentImported_Warehouses.Nls", ep => {
ep.Consumer(() => _container.Resolve<DocumentConsumer>());
ep.PrefetchCount = 1;
ep.UseCircuitBreaker(cb => {
cb.ResetInterval = TimeSpan.FromSeconds(10);
cb.ActiveThreshold = 1;
cb.TrackingPeriod = TimeSpan.FromSeconds(10);
});
});
});DocumentConsumer不再正确地接收消息,但是MassTransit仍然会使用来自RabbitMq的所有消息,并将它们放入错误队列中。这是预期的行为吗?文档没有涵盖太多内容。
发布于 2017-06-17 01:11:28
我认为我们不能仅仅停止接收端点。断路器只是一个中间件,如果你的消费者崩溃超过阈值,它就会主动失效。
断路器的含义是允许失败的消费者背后的基础设施恢复,而不会收到任何可能使其永远超载的请求。
您可以随时使用Fault<DocumentMessage>并重新发布出错的消息。
顺便说一句,大多数容器适配器支持像这样配置消费者:
ep.Consumer<DocumentConsumer>(_container);https://stackoverflow.com/questions/44548214
复制相似问题