Как вставить сжатое байтовое сообщение в IBM MQ с помощью python? (Я пробовал PYMQI и Spring Python)

Я тестирую приложение, которое принимает сжатые сообщения через IBM MQ. Для этого мне нужно отправить сжатое (.zip) сообщение в IBM MQ с пользовательским свойством jms как Compressed = Y

Я борюсь с 2 проблемами -

  1. Как загрузить сообщение .zip в _IBMMQ
  2. Установите заголовок или свойство _jms как Compressed = 'Y'

Я пробовал через 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.

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

JoshMc 30.03.2019 19:06

Не могли бы вы описать проблему, с которой вы столкнулись при размещении zip-файла в виде сообщения, пожалуйста? Например, какой код возврата вы страдаете.

Morag Hughson 30.03.2019 22:43

@MoragHughson: никаких ошибок или исключений. Дело в том, что я не могу вставить сообщение в очередь, кроме как в строковом формате. В случае строки я могу прочитать полное сообщение в одну строку и вставить его. но как это сделать, когда это объект или байт (строка .zip). Как показано ниже, сообщение представляет собой строку queue.put(message). Я пытался указать имя файла.zip вместо сообщения, он отправил строку имя файла.zip в очередь.

Agam 31.03.2019 14:19

Агам, в IBM MQ нет готового способа отправки файлов с указанием имени файла. Существует дополнительная функция MQ, которая поставляется с MQ Advanced и называется управляемой передачей файлов, но это дополнительные расходы по сравнению с обычным IBM MQ. Вам нужно будет прочитать файл, а затем отправить его как сообщение MQFMT_NONE, чтобы преобразование MQ не произошло. По умолчанию MQ MAXMSGL составляет 4 МБ, если вам когда-либо понадобится отправить больше, вам нужно будет принять во внимание максимально допустимую длину сообщения или использовать автоматическую сегментацию (не поддерживается в JMS).

JoshMc 01.04.2019 07:59

Мое предложение выше, чтобы проверить UFM, хотя и не является ответом, оно предоставляет инструмент с открытым исходным кодом, который делает то, на что вы просите взглянуть, возможно, вы решите его использовать, или если вы все еще хотите/нужно написать свой собственный, это может дать вы некоторые идеи о том, как обращаться с вещами.

JoshMc 01.04.2019 07:59

Спасибо @MoragHughson за приведенные выше предложения, я могу сделать это с помощью расширенных функций pymqi на python, опубликую решение здесь.

Agam 27.02.2020 22:16

Спасибо @JoshMc за приведенные выше предложения.

Agam 27.02.2020 22:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
563
0

Другие вопросы по теме