目标队列“@”找不到
在测试 pub/sub 模型时,我更改了订阅者队列的名称,而旧队列的订阅仍然存在于数据库中,因此数据库中存在悬空订阅。
因此,当发布者和订阅者启动并且我尝试从发布者发送消息时,发生了以下异常,基本上发布者停止了并且不再发送任何消息
2011-02-09 09:56:21,115 [6] ERROR Publisher.ServerEndpoint [(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(对象obj,MessageQueueTransaction内部事务,MessageQueueTransactionType事务类型) 在 System.Messaging.MessageQueue.Send(对象 obj,MessageQueueTransactionType transactionType) 在 d:\BuildAgent-02\work\20b5f701adefe8f8\src\impl\unicast\NServiceBus.Unicast.Msmq\MsmqTransport.cs 中的 NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m,字符串目的地):第 334 行 --- 内部异常堆栈跟踪结束 --- 在 d:\BuildAgent-02\work\20b5f701adefe8f8\src\impl\unicast\NServiceBus.Unicast.Msmq\MsmqTransport.cs 中的 NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m,字符串目的地):第 346 行 在 d:\BuildAgent-02\work\20b5f701adefe8f8\src\unicast\NServiceBus.Unicast\UnicastBus.cs:line 中的 NServiceBus.Unicast.UnicastBus.SendMessage(IEnumerable`1 目的地、字符串关联Id、MessageIntentEnum messageIntent、IMessage[] 消息)第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:line 56
是否有一个超时期限,之后它将尝试向其他订阅者发送消息,我等了很长时间......
While testing the pub/sub model, I changed the name of the subscriber queue, while the subscription for the old queue still exists in the DB, so there is a dangling subscription in the DB.
So when publisher and subscriber started and I tried to send message from publisher, following exception happened and basically publisher stopped and no longer send any more message
2011-02-09 09:56:21,115 [6] ERROR Publisher.ServerEndpoint [(null)] <(null)> - Problem occurred when starting the endpoint.
System.Configuration.ConfigurationErrorsException: The destination queue 'StoreInputQueue@' could not be found. You may have misconfigured the destination for this kind of message (Message.EventMessage) in the MessageEndpointMappings of the UnicastBusConfig section in your configuration file.It may also be the case that the given queue just hasn't been created yet, or has been deleted. ---> System.Messaging.MessageQueueException: The queue does not exist or you do not have sufficient permissions to perform the operation.
at System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle()
at System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS properties, IntPtr transaction)
at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
at System.Messaging.MessageQueue.Send(Object obj, MessageQueueTransactionType transactionType)
at NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m, String destination) in d:\BuildAgent-02\work\20b5f701adefe8f8\src\impl\unicast\NServiceBus.Unicast.Msmq\MsmqTransport.cs:line 334
--- End of inner exception stack trace ---
at NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m, String destination) in d:\BuildAgent-02\work\20b5f701adefe8f8\src\impl\unicast\NServiceBus.Unicast.Msmq\MsmqTransport.cs:line 346
at NServiceBus.Unicast.UnicastBus.SendMessage(IEnumerable`1 destinations, String correlationId, MessageIntentEnum messageIntent, IMessage[] messages) in d:\BuildAgent-02\work\20b5f701adefe8f8\src\unicast\NServiceBus.Unicast\UnicastBus.cs:line 593
at NServiceBus.Unicast.UnicastBus.Publish[T](T[] messages) in d:\BuildAgent-02\work\20b5f701adefe8f8\src\unicast\NServiceBus.Unicast\UnicastBus.cs:line 343
at Publisher.ServerEndpoint.Run() in C:\Downloads\ESB\NServiceBus\publisher\publisher\ServerEndpoint.cs:line 26
at NServiceBus.Host.Internal.ConfigManager.<>c_DisplayClass1.b_0() in d:\BuildAgent-02\work\20b5f701adefe8f8\src\host\NServiceBus.Host\Internal\ConfigurationManager.cs:line 56
Is there a timeout period after which it will try to send message to rest of subscribers, I waited quite long...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为它会重试。
从正在运行的端点下拉出地毯(队列)并不是一件好事。在生产中这真的不应该发生。
由于您只是在测试,因此从数据库中删除有问题的订阅行,然后重新启动端点,一切都应该没问题。
I don't think it will retry.
Pulling the rug (queue) out from under a running endpoint is not a good thing to do. In production this really should never happen.
Since you're just testing, delete the offending subscription row from the database, and restart the endpoint, and everything should be fine.