我们在Windows 2008 R2服务器上安装了MSMQ,具有以下防火墙设置: 1)在“允许程序通过Windows防火墙进行通信”中选中消息队列 2)启用TCP端口:2103,2105,1801
但是当c#应用程序(使用FormatName:DIRECT = TCP:xxx.xxx.xxx.xxx \ Private $ \ q1)尝试接收专用队列消息时,它遇到以下错误:
System.Messaging.MessageQueueException:远程计算机不可用。 在System.Messaging.MessageQueue.MQCacheableInfo.get_ReadHandle()
上述设置有什么不妥之处吗?请帮助.........
谢谢, 本
答案 0 :(得分:3)
首先,对于启用Internet的msmq队列,您的队列地址不正确。它的格式应为
FormatName:DIRECT=http://myQueueServerURL/Private$\q1
您还需要在服务器上正确配置msmq以允许对端口80(或442 for https)的传入呼叫。
或者,您可以查看NServiceBus Gateway,它位于msmq上,但负责通过互联网与另一个网关的http通信。
您还可以考虑使用基于互联网的排队,例如Azure service bus。
RE:评论从互联网上的远程队列接收
使用MSMQ,你想要做的是直接上架。
然而,您可以在本地托管队列,然后让发件人通过互联网发送给您。