Настроить интервал cron в интеграции Spring JMS - PullRequest
3 голосов
/ 02 февраля 2012

Мне нужно переслать сообщение из очереди 1 в очередь 2 через указанный интервал, но НЕ сразу после того, как сообщение поступило в очередь 1.Ниже мой конфиг.

<int-jms:inbound-channel-adapter  id="inboundChannelAdapterId" connection-factory="connFactory" destination="jmsQueue1" channel="queueChannel" >
    <int:poller send-timeout="2000" >
        <!--
        <int:interval-trigger initial-delay="60000" interval="60000"
        fixed-rate="true"/>
        -->
        <int:cron-trigger expression="0 0/1 * * * ?" />
    </int:poller>
</int-jms:inbound-channel-adapter>

<int-jms:outbound-channel-adapter channel="queueChannel" connection-factory="connFactory" destination="jmsQueue2" >
</int-jms:outbound-channel-adapter>

<int:channel id="queueChannel" />

Приведенная выше конфигурация xml пересылает сообщение немедленно из Queue1 в Queue2, игнорируяконфигурации.Я пробовал как основанные на интервале, так и основанные на cron решения, и они, кажется, работают аналогично (доставка сообщений из Queue1 в Queue2 немедленно)Что-то не так с конфигурацией "poller" здесь?Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 02 марта 2012

Вам нужен тайм-аут приема на адаптер. В противном случае он заблокирует функцию receive () и немедленно получит сообщение.

РЕДАКТИРОВАТЬ: см. Комментарии ниже - поток, опрашивающий очередь, больше не блокируется по умолчанию, начиная с 2.0.4.

Вы также можете рассмотреть возможность использования синтаксиса 2.0+ для вашего опросора; ваш текущий синтаксис устарел в 2.0 и не разрешен в 2.1 ...

<jms:inbound-channel-adapter id="in" channel="jmsinToStdoutChannel" destination="requestQueue">
    <poller fixed-delay="30000"/>
</jms:inbound-channel-adapter>

Просто чтобы уточнить ... если на адаптере установлен тайм-аут приема, поток опроса будет блокироваться так долго или до тех пор, пока не прибудет сообщение. Это может заставить его выглядеть так, будто опросчик не подчиняется своему расписанию. По умолчанию (начиная с 2.0.4) блокируется, что означает, что сообщение будет получено только по расписанию опроса.

...