Как я могу отправить большое сообщение в WebSphere MQ через JMS? - PullRequest
3 голосов
/ 29 апреля 2011

Для интерфейса IBM WebSphere MQ JMS имеется встроенное ограничение в 2 МБ.
http://www -01.ibm.com / support / docview.wss? Uid = swg21221260

Есть ли способ обойти это ограничение?

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

Ограничение применялось к версиям WMQ, распространенным с WAS еще в V5.1.1 много лет назад.Если это проблема, обновление до текущей версии WMQ решит ее.Текущая версия WMQ - V7.0.1.Версия 6.0.2 также все еще актуальна, но будет недоступна в сентябре 2012 года. V6 и V7 могут отправлять и получать сообщения объемом до 100 МБ, но для самого WMQ по умолчанию установлено значение 4 МБ.Необходимо настроить параметры QMgr, очередей и каналов, если требуются сообщения размером более 4 МБ, но JMS не является ограничением в современных версиях.

В руководствах по WMQ Java / JMS конкретно не указывается максимальный размер, посколькуэто то же самое, что и родная максимальная длина WMQ, равная 100 МБ.Тем не менее, Отчет о производительности WMQ V6 содержит эталонные тесты для сообщений JMS размером до 64 МБ.

Все, что мешает вам поместить сообщение 3 МБ, не является ограничением реализации JMS WMQ в отношении размера сообщения,Если вы проверили MAXMSGL на всех каналах и очередях и QMgr, то это менее очевидно, но - это конфигурация.

0 голосов
/ 30 апреля 2011

Это может показаться трудным, но это решение:

  1. Возьмите содержимое вашего сообщения, преобразуйте его в байтовый массив.
  2. Разделите байтовый массив на n вложенных массивов, каждый размером ~ <1,9 МБ. </li>
  3. Запустите транзакцию JMS и отправьте каждый вложенный массив в ByteMessage, увеличив при этом количество групп:

например

   message.setStringProperty("JMSXGroupID", groupId);
   message.setIntProperty("JMSXGroupSeq", i);

На стороне получателя вы реализуете селектор для получения всех сообщений в группе, как только вы получите первое сообщение.Извлеките все сообщения в группе (надеюсь, вы получите их все), сортируйте их правильно, заново создайте большой байтовый массив, разберите его, и все готово.

Тривиально на самом деле .....

Вот лучший пример .

...