Контекст - Server 2008 R2 с частной очередью, настройка IIS. Отправка сообщений по HTTP с других компьютеров. [MSMQ отсутствует на «веб-сайте по умолчанию». Я изменил идентификатор своего веб-сайта на 1, чтобы установить msmq (предварительно не установив его)]
Я мог бы помочь. Я прочитал все «сообщения msmq по http просто не доставляются» и много раз изучал это, но просто не могу заставить его работать.
Я МОГУ получить очередь для получения сообщений, если использую IP-адрес, а не если я использую полное доменное имя, которое разрешается в тот же IP-адрес. Мне нужно, чтобы доменное имя работало, так как мой следующий шаг - заставить 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
Я получаю 1 сообщение в test.q, я ожидаю 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 сообщений.
ЛЮБАЯ помощь приветствуется.
Спасибо
Итак, решение было простым.
Кажется довольно очевидным, что вся документация была сделана до опции 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>
Готово