.net Rebus未读取MSMQ队列中的消息

.net Rebus未读取MSMQ队列中的消息,.net,msmq,rebus,.net,Msmq,Rebus,我试图调试一个应用程序,使其进入MSMQ队列正在建立但消息不再被处理的状态 我对Rebus/MSMQ的理解非常基础(我继承了这个应用程序,而最初的开发人员已经完全离开了) 我想了解为什么重新启动应用程序时,Rebus不会读取队列中当前存在的消息?我的理解是,在将消息放入队列时,Rebus由事件驱动,如果应用程序处于错误状态,则这些消息将被放入队列中,并且永远不会被处理 我一直在阅读Rebus的文档,除了管道解释之外,似乎找不到更多的信息 该应用程序中的代码太多,无法在此处发布,但该应用程序使用的

我试图调试一个应用程序,使其进入MSMQ队列正在建立但消息不再被处理的状态

我对Rebus/MSMQ的理解非常基础(我继承了这个应用程序,而最初的开发人员已经完全离开了)

我想了解为什么重新启动应用程序时,Rebus不会读取队列中当前存在的消息?我的理解是,在将消息放入队列时,Rebus由事件驱动,如果应用程序处于错误状态,则这些消息将被放入队列中,并且永远不会被处理

我一直在阅读Rebus的文档,除了管道解释之外,似乎找不到更多的信息

该应用程序中的代码太多,无法在此处发布,但该应用程序使用的是Rebus.Ninject版本0.80.1(这是一个旧应用程序)

我将编辑以包含人们需要的任何信息

编辑:

var bus = Configure.With(new NinjectContainerAdapter(context.Kernel))
    .Logging(l => l.NLog())
    .Transport(t => t.UseMsmq(sourceQueue, errorQueue))
    .MessageOwnership(d => d.Use(new CustomBusMessageOwnership(uowFactory)))
    .Serialization(s => s.UseCustomJsonSerialization())
    .CreateBus()
    .Start(numWorkers);
UseCustomJsonSerialization方法只是将编码设置为UTF8,并将SerializeEnumAsString设置为true

编辑2: 终于有机会再次调查此事。我为我们的一个安装创建了一个自动崩溃转储,它似乎比其他安装更容易失败

以下是WinDbg的堆栈跟踪:

00000000 00000001 mscorlib_ni!System.RuntimeMethodHandle.InvokeMethod+0x2
0763ee84 6ef6f561 mscorlib_ni!System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal+0xa1
0763eea8 6ef6f096 mscorlib_ni!System.Reflection.RuntimeMethodInfo.Invoke+0x66
0763eedc 6ef640b6 mscorlib_ni!System.Reflection.MethodBase.Invoke+0x16
0763eee8 07355234 UNKNOWN!Rebus.Bus.Worker+_DoTry_d__2b.MoveNext+0x57c
0763efa4 07354c73 mscorlib_ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Rebus.Bus.Worker+_DoTry_d__2b,_Rebus]]+0x43
0763eff8 07354c0a UNKNOWN!Rebus.Bus.Worker.DoTry+0x6a
0763f074 073546f2 UNKNOWN!Rebus.Bus.Worker+_TryProcessIncomingMessage_d__23.MoveNext+0x62
0763f0ac 0735424b mscorlib_ni!System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[[Rebus.Bus.Worker+_TryProcessIncomingMessage_d__23,_Rebus]]+0x43
0763f100 073541f0 UNKNOWN!Rebus.Bus.Worker.TryProcessIncomingMessage+0x40
0763f144 07353ffe UNKNOWN!Rebus.Bus.Worker.MainLoop+0x5e
0763f174 6ef66d11 mscorlib_ni!System.Threading.ThreadHelper.ThreadStart_Context+0x9d
0763f180 6ef866ea mscorlib_ni!System.Threading.ExecutionContext.RunInternal+0xea
0763f1f0 6ef865f6 mscorlib_ni!System.Threading.ExecutionContext.Run+0x16
0763f204 6ef865b1 mscorlib_ni!System.Threading.ExecutionContext.Run+0x41
0763f21c 6ef66c6c mscorlib_ni!System.Threading.ThreadHelper.ThreadStart+0x44

当我听到这样的症状时,我经常发现“错误”是由于总线处理得太快造成的。你能告诉我接收总线是如何配置的吗?Ninject容器是什么时候配置的?对不起,我很难看出这个程序有什么问题。此外,这是一个相当旧的版本的Rebus正在使用(虽然我不认为这是问题)。你能展示更多的代码吗?我今天将尝试使用一些集成测试来重新创建,以缩小问题的范围。我们很难重现这种情况,似乎只有当我们快速地将大量消息放入队列时才会发生这种情况。这个实现看起来相当可靠(我们有100多个客户在使用它,只有少数更繁忙的客户遇到过这个问题,尽管它确实经常发生,已经回到开发任务中去修复了)。当我有更多信息或解决方案时,我会更新问题。谢谢我已经在生产服务器上为我们遇到这些问题的客户机启用了跟踪日志记录。当我得到一些有价值的东西时,我会更新这个问题。当我听到像这样的症状时,我经常发现“错误”是由于总线处理得太快造成的。你能告诉我接收总线是如何配置的吗?Ninject容器是什么时候配置的?对不起,我很难看出这个程序有什么问题。此外,这是一个相当旧的版本的Rebus正在使用(虽然我不认为这是问题)。你能展示更多的代码吗?我今天将尝试使用一些集成测试来重新创建,以缩小问题的范围。我们很难重现这种情况,似乎只有当我们快速地将大量消息放入队列时才会发生这种情况。这个实现看起来相当可靠(我们有100多个客户在使用它,只有少数更繁忙的客户遇到过这个问题,尽管它确实经常发生,已经回到开发任务中去修复了)。当我有更多信息或解决方案时,我会更新问题。谢谢我已经在生产服务器上为我们遇到这些问题的客户机启用了跟踪日志记录。当我得到有价值的东西时,我会更新这个问题