Потоковая передача с использованием camel JMS

У меня есть приложение, которое помещает сообщение в очередь JMS. Размер сообщения может быть до 150 мб. Сообщение JMS содержит данные массива байтов с дополнительными метаданными в виде xml, как только сообщение помещается в очередь, приложение маршрута верблюда выбирает сообщение и вызывает внешний API Java с сообщением. Я хотел бы передать сообщение из очереди JMS в потоковом режиме с помощью camel jms составная часть. Подскажите, пожалуйста, могу ли я добиться этого с помощью верблюда. В настоящее время я столкнулся с проблемой ошибки кучи.

Пример сообщения JMS приведен ниже.

<request>
    <esb-metadata>
        <source-transaction-id>1234567890</source-transaction-id>
        <environment>Dev</environment>
        <message-type>REQ</message-type>
        <source-id>12345678</source-id>
        <master-id>mst-id1234</master-id>
    </esb-metadata>
    <message-body>
        <parameters>
            <info>
                <document-class>Document</document-class>
                
                <document-guid>idd_C0A5DF59-0000-C51C-BCDA-E76E9476D5C2</document-guid>
            </info>
        </parameters>   
        <document>
            <document-mime-type>std/text</document-mime-type>
            <document-content>SGVhZGluZzEgQ2hhbmdlZCB0b2RheSBKYW4gMTEgc2FtcGxlIHRleHQgYmVsb3csDQpPbmNlIEkg
cmVjZWl2ZSB0aGlzIGluZm9ybWF0aW9uLCBJIHdpbGwgdGhlbiBjb250YWN0IHlvdSBpbW1lZGlh
dGVseSB0byBkaXNjdXNzIHRoZSByZXNvbHV0aW9uIG9mIHlvdXIgY2xhaW0uDQoNCg0KSGVhZGlu
ZzIgc2FtcGxlIHRleHQsDQpJZiBwb3NzaWJsZSwgSSBuZWVkIHRvIHJlY2VpdmUgdGhpcyBpbmZv
cm1hdGlvbiBmcm9tIHlvdSB3aXRoaW4gMzAgRGF5cy4NCg0KMQkxCTENCjIJMgkyDQozCTMJMw0K
NAk0CTQNCg0KSGVhZGluZzMgc2FtcGxlIHRleHQsDQpJIHdpbGwgYXNzdW1lIHlvdSBkbyBub3Qg
d2lzaCB0byBwdXJzdWUgdGhpcyBjbGFpbSBhbmQgSSB3aWxsIGNsb3NlIG15IGZpbGUuDQpBRERF
RCBUSElTIE5FVyBMSU5FIFRPIFNFRSBJRiBJVCBJUyBWSVNJQkxFDQoNCnRhYmxlIHN0YXJ0cyBo
ZXJlDQpwb2xpY3kgbnVtYmVyCWNsYWltIG51bWJlcglpbnN1cmVkDQpwMTIzCWMxMjMJYm9zY2gN
CnAzMjEJYzMyMQlibXcNCnRhYmxlIGVuZHMgaGVyZQ0KDQomIzk2Nzk7CUJ1bGxldCBwb2ludCAx
DQomIzk2Nzk7CUJ1bGxldCBwb2ludCAyDQomIzk2Nzk7CUJ1bGxldCBwb2ludCAzDQoNCjEuCU51
bWJlcmVkIHBvaW50IDENCjIuCU51bWJlcmVkIHBvaW50IDINCjMuCU51bWJlcmVkIHBvaW50IDMN
Cg==        </document-content>
        </document>
    </message-body>
</request>

person Ravi    schedule 26.09.2017    source источник


Ответы (1)


HornetQ поддерживает потоковую передачу больших сообщений, поэтому клиентам не нужно беспокоиться о превышении ограничений памяти. Эта поддержка работает в реализации HornetQ JMS, но JMS API напрямую не поддерживает потоковую передачу больших сообщений, поэтому стандартный компонент JMS (например, тот, который предоставляет Camel), скорее всего, не будет работать для этого варианта использования. Вам нужно будет использовать компонент, специально написанный для поддержки реализации HornetQ. Вы можете прочитать о том, как клиенты HornetQ JMS могут передавать большие сообщения в документация.

person Justin Bertram    schedule 05.12.2017