Сконфигурируйте поллер в Spring Integration как очередь

Я работаю над реализацией буфера, чтобы выполнять различные задания. Я работаю над проектом на базе Spring. Я решил использовать Spring Integration для достижения своей цели. Я прошел образец проекта Cafè, чтобы понять, как работает SI.

Чтобы продемонстрировать Spring Integration, я реализовал таблицу, в которую я динамически вставляю задания для выполнения. Эта таблица является "шлюзом". Затем я настроил роутер и различные каналы.

Что я не совсем понимаю, так это элементы poller, которые должны проверять наличие новых заданий в "шлюзе". Это правильно?

Если это так, как я могу настроить опросщик? Заранее спасибо! Вот код XML:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-feed="http://www.springframework.org/schema/integration/feed"
xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/integration
    http://www.springframework.org/schema/integration/spring-integration.xsd
    http://www.springframework.org/schema/integration/stream
    http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd">


<int:gateway id="usersToSend" service-interface="it.stasbranger.spidly.rss.UsersToSend" />


<int:channel id="channel" />

<int:channel id="providers"/>
<int:router input-channel="providers" ref="providerRouter" method="resolveProviderChannel"/>

<int:channel id="twitterChannel">
      <int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="twitterChannel" ref="twitterService" method="updateStatusByProfile"/>

<int:channel id="facebookChannel">
      <int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="facebookChannel" ref="facebookService" method="updateStatusByProfile"/>

<int:channel id="linkedinChannel">
      <int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="linkedinChannel" ref="linkedinService" method="writeSlogan2Linkedin"/>

<bean id="twitterService" class="it.social.TwitterService"/>
<bean id="facebookService" class="it.social.FacebookService"/>
<bean id="linkedinService" class="it.social.LinkedinService"/>

<int:poller id="poller" default="true">

</int:poller>

FB

1 ответ

<gateway/>s не опрашиваются, они "управляются сообщениями" в том смысле, что вызывающая сторона "отправляет" сообщение в поток, используя шлюз.

Для сценария опроса используйте <int:inbound-channel-adapter/> который опрашивает метод (по расписанию опроса) в поисках работы.

Если метод возвращает значение NULL, модуль опроса возвращается в спящий режим (до следующего запуска). Если метод возвращает значение, сообщение отправляется на канал.

Другие вопросы по тегам