NServiceBus 3.0 MarkAsComplete()导致NServiceBus.Unicast.Queuing.QueueNotFoundException

NServiceBus 3.0 MarkAsComplete()导致NServiceBus.Unicast.Queuing.QueueNotFoundException,nservicebus,Nservicebus,我已经升级了一些NSB 2.6端点,以使用NSB 3.0,现在它们大部分工作正常。在我的一个传奇故事处理程序中,我更新了一个repo,然后标记为complete()。在日志文件中,我看到以下错误 2012-03-11 16:45:47667[Worker.14]警告NServiceBus.Unicast.UnicastBus-MyHandlerABC处理失败消息。 NServiceBus.Unicast.Queuing.QueueNotFoundException:引发了类型为“NService

我已经升级了一些NSB 2.6端点,以使用NSB 3.0,现在它们大部分工作正常。在我的一个传奇故事处理程序中,我更新了一个repo,然后标记为complete()。在日志文件中,我看到以下错误

2012-03-11 16:45:47667[Worker.14]警告NServiceBus.Unicast.UnicastBus-MyHandlerABC处理失败消息。 NServiceBus.Unicast.Queuing.QueueNotFoundException:引发了类型为“NServiceBus.Unicast.Queuing.QueueNotFoundException”的异常。 位于NServiceBus.Unicast.Queuing.Msmq.MsmqMessageSender.NServiceBus.Unicast.Queuing.ISendMessages.Send(传输消息消息,地址) 在NServiceBus.Unicast.UnicastBus.ClearTimeoutsFor处(Guid sagaId) 在NServiceBus.Sagas.Impl.SagaDispatcherFactory.notifyTimeOutManagerAtsagaha已完成(ISaga saga) 在NServiceBus.Sagas.Impl.SagaDispatcherFactory.c_DisplayClass6.b_1() 在NServiceBus.Unicast.UnicastBus.c_DisplayClass20.b_1d(动作调度) 在System.Collections.Generic.List
1.ForEach(操作
1操作) 在NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IBuilder生成器,对象toHandle) 2012-03-11 16:45:47668[Worker.14]警告NServiceBus.Unicast.Transport.Transactional.Transactional传输-无法为ID为c2bf13f9-7138-4df5-aa42-9cc3f9817e78\13152的消息引发“已接收传输消息”事件 NServiceBus.Unicast.Transport.TransportMessageHandlingFailedException:引发了类型为“NServiceBus.Unicast.Transport.TransportMessageHandlingFailedException”的异常。 在NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IBuilder生成器,对象toHandle) 在NServiceBus.Unicast.UnicastBus.HandleMessage(IBuilder生成器,TransportMessage m)上 在NServiceBus.Unicast.UnicastBus.HandleTransportMessage(IBuilder childBuilder,TransportMessage msg)上 在NServiceBus.Unicast.UnicastBus.TransportMessageReceived(对象发送方,TransportMessageReceivedEventArgs e) 在System.EventHandler`1.Invoke处(对象发送方,TEventArgs e) 在NServiceBus.Unicast.Transport.Transactional.Transactional.OnTransportMessageReceived(TransportMessage消息)上

这发生在NSB处理完消息之后(我将日志记录为处理程序中的最后一行,它显示在上面的堆栈跟踪的正上方)


这些端点在升级到NSB3.0之前就已经工作了,所以我确信我在某些地方缺少一些配置设置。要让sagas在NSB3.0中工作,是否需要一些新功能?

在3.0中,您必须命名端点,否则端点名称将默认为IConfigureThisEndpoint实现的命名空间。我猜您使用的队列名称与目标端点的名称不匹配,如果让端点创建队列,则队列名称已更改。希望这有帮助。

当您完成一个saga时,超时管理器会自动得到通知,以便它可以清除该saga实例的任何未完成超时

public void ClearTimeoutsFor(Guid sagaId)
{
        var controlMessage = ControlMessage.Create();

        controlMessage.Headers[Headers.SagaId] = sagaId.ToString();
        controlMessage.Headers[Headers.ClearTimeouts] = true.ToString();

        MessageSender.Send(controlMessage, TimeoutManagerAddress);
}

您能否验证是否有一个名为
{endpointname}
的队列。您的计算机超时?

我在另一个处理程序中添加了一个MarkAsComplete()方法调用,并进行了尝试,结果也失败了。那么,NSB试图联系的队列是什么?('NServiceBus.Unicast.Queuing.QueueNotFoundException')我暂时已经注释掉了所有MarkAsComplete()行,以使其重新工作。应该是这样的-谢谢Andreas!我回家后再试试这个。我没有创建那些额外的超时队列