Я пытаюсь использовать источник XD JMS для чтения данных из очереди activeMq и просто записывать их. Мое требование - читать очередь только с определенным интервалом, пытаясь реализовать регулирование. Мне нужен мой поток для обработки только 1 сообщения в секунду, в очереди могут быть сообщения с любой скоростью, например 20 сообщений в секунду и т. Д.
Стандартный источник JMS реализует message-driven-channel-adapter
, который немедленно считывает данные из очереди. Итак, я создал собственный модуль (polledJms
) следующим образом:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<import resource="../../../common/jms-${provider}-infrastructure-context.xml"/>
<int:channel id="output"/>
<int-jms:inbound-channel-adapter id="jmsPolledSource"
channel="output"
destination-name="${destination}"
connection-factory="connectionFactory">
<int:poller fixed-rate="5000"/>
</int-jms:inbound-channel-adapter>
Now when I post something on the queue its not picked up immmediately but after a delay. However that delay isnt consistent. I expect the delay to be always 5sec but sometimes its 10sec, 1minute etc. Not sure what I am doing wrong here.
Мое определение потока выглядит следующим образом:
"polledJms --destination=readQ | log"
Я даже попробовал выражение cron в xml вместо фиксированной скорости, чтобы читать каждые 10 секунд в опросчике и по-прежнему видеть такое же поведение.
Мой собственный модуль - это правильный способ реализовать регулирование очередей JMS, или XD предоставляет готовые возможности для этого, что я упустил. Пожалуйста помоги.