无法让 MSMQ 通过 HTTP 通过 FQDN 接收消息

无法让 MSMQ 通过 HTTP 通过 FQDN 接收消息

上下文 - 带有私有队列的 Server 2008 R2,IIS 设置。通过 HTTP 从其他计算机发送消息。[MSMQ 不在“默认网站”中。我将我的网站的 ID 更改为 1 以安装 msmq(之前已卸载它)]

我需要一些帮助。我读完了所有“通过 http 发送的 msmq 消息无法传递”的内容,并对此进行了大量研究,但就是无法让它正常工作。

如果我使用 IP 地址,我可以让队列接收消息,但如果我使用解析为相同 IP 地址的 FQDN,则无法接收消息。我需要域名才能工作,因为我的下一步是让 SSL 工作,显然我的证书是完整的域名!

我有一个非常简单的应用程序,可以发送以下消息:

Private Function SendStuff() As String

    Dim output As String = "Mesages Sent To" & Environment.NewLine

    Dim Addresses As New List(Of String)
    Addresses.Add("Direct=HTTP://46.0.0.206/msmq/Private$/test.q")
    Addresses.Add("Direct=HTTPS://46.0.0.206/msmq/Private$/test.q")
    Addresses.Add("Direct=HTTP://subdomain.domain.net/msmq/Private$/test.q")
    Addresses.Add("Direct=HTTPS://subdomain.domain.net/msmq/Private$/test.q")

    For Each address In Addresses

        Dim fullAddress As String = "FormatName:" & address

        Dim mq As New System.Messaging.MessageQueue(fullAddress)
        Dim mm As New System.Messaging.Message()


        Dim body As String = "Hello via constructor " & fullAddress

        With mm
            .Body = body
            .AcknowledgeType = Messaging.AcknowledgeTypes.None
            .UseAuthentication = False
            .TimeToReachQueue = New TimeSpan(0, 20, 0)
            .Label = address.Substring(7, 14)
        End With

        mq.Send(mm)
        output = output & Environment.NewLine & fullAddress
    Next
    Return output
End Function

在服务器上,在 IIS 日志中,我们得到了这样的信息:

2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 80 - 83.0.0.130 - 200 0 0 31 
2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 443 - 83.0.0.130 - 200 0 0 46
2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 80 - 83.0.0.130 - 200 0 0 78

我在 test.q 中收到 1 条消息,我期望收到 2 条(均来自 HTTP 协议,我还没有期望收到 httpS,但如果能收到就好了:)

收到的消息:

    <?xml version="1.0"?>
<string>Hello via constructor FormatName:Direct=HTTP://46.0.0.206/msmq/Private$/test.q</string>

有人能告诉我下一步该看什么吗,在服务器/接收计算机事件日志中没有任何有趣的东西,尽管我打开了‘端到端’,但在记录“应用程序和服务日志\Microsoft\Windows\MSMQ'中我没有得到任何内容,里面有 0 条消息。

任何帮助都值得感激。

谢谢

答案1

好的,解决方案很简单。

似乎很明显,所有文档都是在 HTTP 选项之前制作的,因此只缺少一个示例。

您需要为 MSMQ 添加重定向,从 FQDN.com 到 localhost。

您可以通过在以下位置添加 XML 文件来执行此操作:C:\Windows\System32\msmq\Mapping

内容如下:

<redirections xmlns="msmq-queue-redirections.xml">
  <redirection>
      <from>http://FQDN.com/msmq/private$/test.q</from>
      <to>http://localhost/msmq/private$/test.q</to> 
  </redirection>
</redirections>

完毕

相关内容