У меня есть установка, в которой у меня есть цепочка серверов, которым мне нужно отправлять сообщения между:
A -> B
На A у меня есть приложение, которое помещает сообщение в локальную очередь MSMQ. Эта очередь должна перенаправить сообщение в очередь MSMQ на B.
Сообщения не обязательно должны быть транзакционными.
Я включил поддержку HTTP в функции очереди сообщений Windows. Я добавил файл сопоставления в папку System32 / msmq / mappings, который выглядит следующим образом:
<redirections xmlns="msmq-queue-redirections.xml">
<redirection>
<from>http://A/msmsq/private$/logger</from>
<to>http://B/msmq/private$/logger</to>
</redirection>
</redirections>
Я использую PowerShell для отправки сообщений в очередь на A следующим образом:
Get-MsmqQueue -name logger | Send-MsmqQueue -body "test message" -label "test"
Когда сообщения помещаются в очередь на A, они не перенаправляются на B, они остаются в очереди A.
Как мне настроить A и B, чтобы сообщения пересылались из MSMQ на A в MSMQ на B?
ОБНОВИТЬ
В реальном сценарии в цепочке задействовано больше серверов, и каждому серверу разрешено связываться только со следующим сервером в цепочке. На последнем сервере в цепочке приложение читает из очереди на этом сервере и вставляет сообщения в базу данных.
Вы не можете сделать это так, как пытаетесь. Когда вы отправляете сообщение в локальную очередь A, это все. Сообщение было успешно доставлено. Работа выполнена.
MSMQ использует исходящие очереди для обеспечения необходимой вам функциональности.
Используйте PowerShell для отправки сообщения непосредственно на сервер B. Сообщение хранится в очереди исходящих сообщений на A до тех пор, пока не будет доставлено на B. В действии с промежуточным хранением.