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