我已经升级了一些NSB 2.6端点以使用NSB 3.0,现在让它们在大多数情况下工作。在我的一个传奇处理程序中,我更新了一个repo,然后是MarkAsComplete()。在日志文件中,我看到以下错误;
2012-03-11 16:45:47,667 [Worker.14] WARN NServiceBus.Unicast.UnicastBus - MyHandlerABC处理消息失败。
NServiceBus.Unicast.Queuing.QueueNotFoundException:抛出了类型'NServiceBus.Unicast.Queuing.QueueNotFoundException'的异常。
在NServiceBus.Unicast.Queuing.Msmq.MsmqMessageSender.NServiceBus.Unicast.Queuing.ISendMessages.Send(TransportMessage message,Address address)
在NServiceBus.Unicast.UnicastBus.ClearTimeoutsFor(Guid sagaId)
在NServiceBus.Sagas.Impl.SagaDispatcherFactory.NotifyTimeoutManagerThatSagaHasCompleted(ISaga saga)
在NServiceBus.Sagas.Impl.SagaDispatcherFactory。<> c_ DisplayClass6.b _1()
在NServiceBus.Unicast.UnicastBus。<> c_ DisplayClass20.b _1d(行动派遣)
在System.Collections.Generic.List 1.ForEach(Action
1个动作)
在NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IBuilder builder,Object toHandle)
2012-03-11 16:45:47,668 [Worker.14] WARN NServiceBus.Unicast.Transport.Transactional.TransactionalTransport - 为ID = c2bf13f9-7138-4df5-aa42-9cc3f9817e78 \ 13152的消息提出“收到传输消息”事件失败
NServiceBus.Unicast.Transport.TransportMessageHandlingFailedException:抛出了类型为“NServiceBus.Unicast.Transport.TransportMessageHandlingFailedException”的异常。
在NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IBuilder builder,Object toHandle)
在NServiceBus.Unicast.UnicastBus.HandleMessage(IBuilder builder,TransportMessage m)
在NServiceBus.Unicast.UnicastBus.HandleTransportMessage(IBuilder childBuilder,TransportMessage msg)
在NServiceBus.Unicast.UnicastBus.TransportMessageReceived(Object sender,TransportMessageReceivedEventArgs e)
在System.EventHandler`1.Invoke(对象发送者,TEventArgs e)
在NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.OnTransportMessageReceived(TransportMessage msg)
这是在NSB处理完一条消息后发生的(我已将日志记录为处理程序中的最后一行,并且紧接在上面的堆栈跟踪上方)
这些端点在升级到NSB3.0之前正在工作,所以我确定我在某个地方缺少一些配置设置。在NSB3.0中有没有新的工作要求使用传真机吗?
答案 0 :(得分:2)
当你完成一个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}
的队列。机器超时?
答案 1 :(得分:0)
在3.0中,您必须为端点命名,否则端点名称将默认为IConfigureThisEndpoint实现的命名空间。我的猜测是您使用的队列名称与目标端点的名称不匹配,如果您让端点创建队列,则队列名称已更改。希望这会有所帮助。