我们将MassTransit与RabbitMQ结合使用。以下dll版本正在我们的控制台应用程序中使用:
即使发布方法包含在try/catch
中,有时发布会导致崩溃。我不得不说我们连续发表了2000多篇文章。
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at RabbitMQ.Client.Framing.Impl.Connection.HeartbeatReadTimerCallback(Object state)
at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
at System.Threading.TimerQueue.AppDomainTimerCallback()
导致NullReference的Publish是:
...
IBusControl BusControl = Bus.Factory.CreateUsingRabbitMq(busFactoryConfig =>
{
busFactoryConfig.Host(new Uri(ServerUrl), hostConfig =>
{
hostConfig.Username(Username);
hostConfig.Password(Password);
});
});
...
//I suppose the crash occurs after the code below is executed
TaskUtil.Await(() => BusControl.Publish(message));
我知道this问题,但即使关闭,我也没有看到任何明确的解决方案......
我想问一下,如果更新dll是解决方案,我们必须更新哪个版本,我们是否只需更新MassTransit dll(参见上面的列表)或RabbitMQ服务器?我感谢任何帮助。
编辑这是我们的生产环境中出现的问题。所以不幸的是我不可能调试......
编辑在Gitter.im上得到了某人的答案
我建议你将MT更新到最新版本。它使用了 4.1.3 rabbitmq的版本。这个应该包含修复。如果您的问题与您刚发布的rabbitmq问题有关。在 其他情况我无法帮助你。我的意思是最新版本 https://www.nuget.org/packages/MassTransit.RabbitMQ/3.5.7