【发布时间】:2019-08-30 15:06:19
【问题描述】:
我将 Masstransit 与 RabbitMQ、log4net 用于日志记录,一切正常。但是当 RabbitMQ 服务器关闭时,我注意到日志中充满了错误:
错误 - RabbitMQ 连接失败:代理无法访问:localhost:5672/
但仍然可以无限制地发布消息。看起来这样的消息被发送然后消失了。
是否有可能引发此类异常并手动处理它们?或者我是否可以强制Publish 方法在代理关闭时抛出Exception?
以下是我的巴士设置:
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{ });
cfg.UseLog4Net();
cfg.ReceiveEndpoint("test-queue", ep =>
{
ep.StateMachineSaga(context.Resolve<ProductSaga>(),
context.Resolve<ILifetimeScope>());
if (ep is IRabbitMqReceiveEndpointConfigurator)
{
((IRabbitMqReceiveEndpointConfigurator)ep).PrefetchCount = 8;
}
ep.UseInMemoryOutbox();
});
});
【问题讨论】:
-
如果 broker 宕机,Publish 会抛出异常。
-
不,不会。这就是问题所在。
-
在调用 publish 之前,你在公交车上给
.StartAsync()打电话了吗?
标签: c# rabbitmq masstransit