Интеграция с JMS
Описание
В данном примере демонстрируется настройка взаимодействия с использованием JMS в Entaxy ION. Реализуется отправка и чтение сообщений из очереди.
Процесс взаимодействия с JMS состоит из следующих шагов:
-
Создать профиль системы с именем
jmsи добавить к нему:-
Входной кастомный коннектор (consumer). В точке кастомизации custom-route создаем маршрут для чтения сообщений из очереди:
<?xml version="1.0" encoding="UTF-8"?> <entaxy:object-input-route xmlns="http://camel.apache.org/schema/blueprint" xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:entaxy="http://www.entaxy.ru/schemas/1.0" xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0"> <blueprint:bean id="jmsTest" class="org.apache.camel.component.jms.JmsComponent"> <blueprint:property name="connectionFactory" ref="pooledConnectionFactory"/> </blueprint:bean> <blueprint:bean id="pooledConnectionFactory" class="org.messaginghub.pooled.jms.JmsPoolConnectionFactory" init-method="start" destroy-method="stop"> <blueprint:property name="maxConnections" value="10"/> <blueprint:property name="maxSessionsPerConnection" value="100"/> <blueprint:property name="connectionFactory" ref="artemisConnectionFactory"/> </blueprint:bean> <blueprint:bean id="artemisConnectionFactory" class="org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory"> <blueprint:argument index="0" value="(tcp://localhost:61616)"/> <blueprint:argument index="1" value="entaxy"/> <blueprint:argument index="2" value="entaxy"/> </blueprint:bean> <from uri="jmsTest:test35"/> <m:log loggingLevel="INFO" message="Result JMS IN: ${body}"/> <m:respond now="true" continue="false"/> </entaxy:object-input-route> -
Выходной кастомный коннектор (producer). В точке кастомизации custom-route создаем маршрут для отправки сообщений в очередь:
<?xml version="1.0" encoding="UTF-8"?> <entaxy:object-route xmlns="http://camel.apache.org/schema/blueprint" xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:entaxy="http://www.entaxy.ru/schemas/1.0" xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0"> <blueprint:bean id="jmsTest" class="org.apache.camel.component.jms.JmsComponent"> <blueprint:property name="connectionFactory" ref="pooledConnectionFactory"/> </blueprint:bean> <blueprint:bean id="pooledConnectionFactory" class="org.messaginghub.pooled.jms.JmsPoolConnectionFactory" init-method="start" destroy-method="stop"> <blueprint:property name="maxConnections" value="10"/> <blueprint:property name="maxSessionsPerConnection" value="100"/> <blueprint:property name="connectionFactory" ref="artemisConnectionFactory"/> </blueprint:bean> <blueprint:bean id="artemisConnectionFactory" class="org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory"> <blueprint:argument index="0" value="(tcp://localhost:61616)"/> <blueprint:argument index="1" value="entaxy"/> <blueprint:argument index="2" value="entaxy"/> </blueprint:bean> <setBody> <simple>Entaxy JMS test message in ${headers.firedTime}</simple> </setBody> <m:log loggingLevel="INFO" message="Body JMS OUT: ${body}"/> <to uri="jmsTest:test35"/> </entaxy:object-route> -
К выходному кастомному коннектору добавляем маршрут на базе компонента таймер, инициирующий вызов коннектора с заданным интервалом:
<?xml version="1.0" encoding="UTF-8"?> <entaxy:common-route xmlns="http://camel.apache.org/schema/blueprint" xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:entaxy="http://www.entaxy.ru/schemas/1.0" xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0"> <m:log message="in route ${routeId}" loggingLevel="INFO"/> <to uri="system:jms"/> </entaxy:common-route>
-
-
В результате мы получаем:
-
Таймер инициирует вызов выходного коннектора профиля
jms -
В выходном коннекторе (producer) формируется сообщение и отправляется в очередь
test35 -
Входной коннектор (consumer) подписан на данную очередь и автоматически получает сообщения
-
Полученные сообщения отображаются в логах:
11:14:55.926 INFO [Thread-195] Body JMS OUT: Entaxy JMS test message in Tue Apr 21 11:14:55 MSK 2026 11:14:55.956 INFO [Camel (jms.custom-connector-in.main) thread #69 - JmsConsumer[test35]] c58dc3a0-482e-49b1-8b17-be17f57f0615#{"service":"sys-26","sender":"jms"}# Result JMS IN: Entaxy JMS test message in Tue Apr 21 11:14:55 MSK 2026
-