在测试pub / sub模型时,我更改了订阅者队列的名称,而旧队列的订阅仍然存在于DB中,因此数据库中存在悬空订阅。
因此,当发布者和订阅者启动并且我尝试从发布者发送消息时,发生以下异常并且基本上发布者已停止并且不再发送任何消息
2011-02-09 09:56:21,115 [6] ERROR Publisher.ServerEndpoint [(null)]<(null)> - 启动端点时出现问题。 System.Configuration.ConfigurationErrorsException:找不到目标队列“StoreInputQueue @”。您可能在配置文件中的UnicastBusConfig部分的MessageEndpointMappings中错误配置了此类消息(Message.EventMessage)的目标。也可能是指定队列尚未创建或已被删除。 ---> System.Messaging.MessageQueueException:队列不存在或您没有足够的权限来执行操作。 在System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() 在System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS属性,IntPtr事务) 在System.Messaging.MessageQueue.SendInternal(Object obj,MessageQueueTransaction internalTransaction,MessageQueueTransactionType transactionType) 在System.Messaging.MessageQueue.Send(Object obj,MessageQueueTransactionType transactionType) 位于d:\ BuildAgent-02 \ work \ 20b5f701adefe8f8 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs中的NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m,String destination):第334行 ---内部异常堆栈跟踪结束--- 位于d:\ BuildAgent-02 \ work \ 20b5f701adefe8f8 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs中的NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m,String destination):第346行 在NS:serviceBus.Unicast.UnicastBus.SendMessage(IEnumerable`1目的地,String correlationId,MessageIntentEnum messageIntent,IMessage []消息)在d:\ BuildAgent-02 \ work \ 20b5f701adefe8f8 \ src \ unicast \ NServiceBus.Unicast \ UnicastBus.cs:line 593 位于d:\ BuildAgent-02 \ work \ 20b5f701adefe8f8 \ src \ unicast \ NServiceBus.Unicast \ UnicastBus.cs中的NServiceBus.Unicast.UnicastBus.Publish [T](T [] messages):第343行 在C:\ Downloads \ ESB \ NServiceBus \ publisher \ publisher \ ServerEndpoint.cs中的Publisher.ServerEndpoint.Run()中:第26行 在NServiceBus.Host.Internal.ConfigManager。<> c_ DisplayClass1.b _0()在d:\ BuildAgent-02 \ work \ 20b5f701adefe8f8 \ src \ host \ NServiceBus.Host \ Internal \ ConfigurationManager .cs:第56行
是否有超时期限,之后会尝试向其他订阅者发送消息,我等了很长时间......
答案 0 :(得分:0)
我认为它不会重试。
从正在运行的端点下拉出地毯(队列)并不是一件好事。在生产中,这绝不应该发生。
由于您只是在测试,从数据库中删除有问题的订阅行,然后重新启动端点,一切都应该没问题。