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

Есть два узла, на ктр. установлен 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
Форумы / Java [игнор отключен] [закрыт для гостей] / ActiveMQ to ActiveMQ / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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