Использование Win32com Python для отправки сообщения MSMQ, которое запрашивает ответ через очередь ответов - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь преобразовать пример кода Microsoft Visual Basic / C ++ в Python 3. Он отправляет сообщение MSMQ, которое запрашивает ответ в очереди ответов.

Пример здесь: https://msdn.microsoft.com/en-us/library/ms705720(v=vs.85).aspx

import win32com.client
import os

computer_name = os.getenv('COMPUTERNAME')

strdestformatname = "direct=os:" + computer_name + "\\PRIVATE$\\python_in"
strrespformatname = "direct=os:" + computer_name + "\\PRIVATE$\\python_out"

dest_msmq = win32com.client.Dispatch("MSMQ.MSMQDestination")
resp_msmq = win32com.client.Dispatch("MSMQ.MSMQDestination")

dest_msmq.FormatName = strdestformatname
resp_msmq.FormatName = strdestformatname

msg = win32com.client.Dispatch("MSMQ.MSMQMessage")

# This next line creates
# Member not found
# pywintypes.com_error: (-2147352573, 'Mitglied nicht gefunden.', None, None)
msg.ResponseDestination = resp_msmq

msg.Label = "Test Message: Response"
msg.Send(DestinationQueue = dest_msmq)

Я создал очередь MSMQ "python_in" и "python_out" на моем компьютере. Эти работы. Если я уберу строку:

msg.ResponseDestination = resp_msmq

сообщение появляется в очереди "python_in". Я также отправляю его прямо в очередь "python_out".

Сообщение об ошибке:

pywintypes.com_error: (-2147352573, 'Mitglied nicht gefunden.', Нет, Нет (= Участник не найден)

Ниже приведено изображение, показывающее, как приходит сообщение при комментировании кода очереди ответа. Без очереди ответа, конечно.

This is how the queued message looks. It has no reply queue

Некоторая дополнительная информация: Я тестирую это на Win7 professional с 32-битным Python 3.6.5 и последней установленной pywin32 (версия 223).

Информация о том, как сделать MSMQ без ответа, находится здесь: http://gouthamanbalaraman.com/blog/sending-msmq-messages-python.html

Кто-то утверждает, что он получил аналогичную вещь для работы (установка ответа для подтверждение), здесь, с источником: https://www.experts -exchange.com / вопросы / 21207798 / Python-и-MSMQ.html

Я также заставил его работать в IronPython несколько лет назад, но это Python 2 Как создать новое сообщение MSMQ в IronPython с меткой, очередью ответов и другими свойствами

...