Я тестирую приложение, которое принимает сжатые сообщения через IBM MQ. Для этого мне нужно отправить сжатое (.zip) сообщение в IBM MQ с пользовательским свойством jms как Compressed = Y
Я борюсь с 2 проблемами -
Я пробовал через Python (1) pymqi — мне удалось отправить строку через MQ. Но до сих пор не удалось отправить .zip.
(2) Spring Python. Благодаря этому я смог установить пользовательское свойство как «Сжатый Y», но снова застрял с загрузкой .zip в очередь.
#PYMQI
import pymqi
queue_manager = 'QM1'
channel = 'DEV.APP.SVRCONN'
host = '127.0.0.1'
port = '1414'
queue_name = 'TEST.1'
message = 'Hello from Python!'
conn_info = '%s(%s)' % (host, port)
qmgr = pymqi.connect(queue_manager, channel, conn_info)
queue = pymqi.Queue(qmgr, queue_name)
queue.put(message)
queue.close()
qmgr.disconnect()
# Spring Python
from springpython.jms.core import TextMessage
msg = TextMessage("Hello!")
msg.Compressed = "Y"
print msg
from springpython.jms.core import JmsTemplate
from springpython.jms.factory import WebSphereMQConnectionFactory
qm_name = "QM.1"
channel = "SVRCONN1.1"
host = "192.168.1.121"
listener_port = "1434"
queue1 = "TEST.1"
factory = WebSphereMQConnectionFactory(qm_name, channel, host,
listener_port)
jms_template = JmsTemplate(factory)
jms_template.send(msg, queue1)
factory.destroy()
#Above code is for reference only, I have taken them from their own websites.
Не могли бы вы описать проблему, с которой вы столкнулись при размещении zip-файла в виде сообщения, пожалуйста? Например, какой код возврата вы страдаете.
@MoragHughson: никаких ошибок или исключений. Дело в том, что я не могу вставить сообщение в очередь, кроме как в строковом формате. В случае строки я могу прочитать полное сообщение в одну строку и вставить его. но как это сделать, когда это объект или байт (строка .zip). Как показано ниже, сообщение представляет собой строку queue.put(message). Я пытался указать имя файла.zip вместо сообщения, он отправил строку имя файла.zip в очередь.
Агам, в IBM MQ нет готового способа отправки файлов с указанием имени файла. Существует дополнительная функция MQ, которая поставляется с MQ Advanced и называется управляемой передачей файлов, но это дополнительные расходы по сравнению с обычным IBM MQ. Вам нужно будет прочитать файл, а затем отправить его как сообщение MQFMT_NONE, чтобы преобразование MQ не произошло. По умолчанию MQ MAXMSGL составляет 4 МБ, если вам когда-либо понадобится отправить больше, вам нужно будет принять во внимание максимально допустимую длину сообщения или использовать автоматическую сегментацию (не поддерживается в JMS).
Мое предложение выше, чтобы проверить UFM, хотя и не является ответом, оно предоставляет инструмент с открытым исходным кодом, который делает то, на что вы просите взглянуть, возможно, вы решите его использовать, или если вы все еще хотите/нужно написать свой собственный, это может дать вы некоторые идеи о том, как обращаться с вещами.
Спасибо @MoragHughson за приведенные выше предложения, я могу сделать это с помощью расширенных функций pymqi на python, опубликую решение здесь.
Спасибо @JoshMc за приведенные выше предложения.





Проверьте источник для Capitalware.com/ufm_overview.html