powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ActiveMQ to ActiveMQ
1 сообщений из 1, страница 1 из 1
ActiveMQ to ActiveMQ
    #39090935
bob1970
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Зашел в тупик. Кто в теме посоветуйте как решить , на мой взгляд, типичную задачу.

Есть два узла, на ктр. установлен ActiveMQ. Связь между узлами ненадежная. Как сделать так , чтобы если между узлами связи нет, то сообщение оставалось в выходной очереди отправителя и при восстановлении все сообщения отправлялись. Сделал через транзакции след. образом. Конф-я клиента:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
<!-- Локальный ActiveMQ -->
	<bean id="local-mq-factory" class="org.apache.activemq.ActiveMQConnectionFactory"
		p:brokerURL="tcp://${mqshop}:61616" 
		p:userName="admin" 
		p:password="admin"
		p:redeliveryPolicy-ref="activeMQRedeliveryPolicy"  />
		
	<bean id="localmq" class="org.apache.camel.component.jms.JmsComponent"
		p:connectionFactory-ref="local-mq-factory" 
		p:transacted="true"
		p:transactionManager-ref="jmsTxManager"/>

<!-- Правила для отправки -->
	<bean id="activeMQRedeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy"
		p:initialRedeliveryDelay="10000"
		p:maximumRedeliveries="-1"
	/>
	 

<!-- Офисный ActiveMQ -->
	<bean id="officemq" class="org.apache.camel.component.jms.JmsComponent" 
		p:connectionFactory-ref="office-mq-factory"/>

	<bean id="office-mq-factory" class="org.apache.activemq.ActiveMQConnectionFactory"
		p:brokerURL="tcp://{mqoffice}:61616" 
		p:userName="admin" 
		p:password="admin"
		p:redeliveryPolicy-ref="activeMQRedeliveryPolicy"/>
		
<!-- Менеджер транзакций -->
	<bean id="jmsTxManager"
		class="org.springframework.jms.connection.JmsTransactionManager"
		p:connectionFactory-ref="local-mq-factory" />

  	<bean id="PROPAGATION_REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
    	<property name="transactionManager" ref="jmsTxManager"/>
    	<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
  	</bean>


....
Код: xml
1.
2.
3.
4.
5.
6.
7.
<endpoint id="to-officemq" uri="officemq:queue:mqfromshop"/>
		<!-- Синхронизация с офисом -->
		<route>
			<from uri="localmq:queue:tempforsendq" />
			<transacted ref="PROPAGATION_REQUIRED"/>
			<to ref="to-officemq" />
		</route>



В случае обрыва связи ActiveMQ сходит с ума. В логах постоянное "Caused by: java.net.ConnectException: В соединении отказано", что естественно. Соединение проверяется несколько раз в секунду, загрузка подскакивает под 50%. Что тоже понятно. Как-то бы настроить периодичность проверки. Точнее, если связи нет, то засыпать на какое-то время и не пытаться отправлять, как только связь появилась, начать отправку.

Или может как-то конфу подправить...

Пробовал идти другим путем, через DLQ. Принципиально не решает вопроса, даже хуже.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ActiveMQ to ActiveMQ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]