весенняя интеграция предотвращает опрос, когда база данных недоступна - PullRequest
0 голосов
/ 16 февраля 2012

мы используем Spring Integration 2.1 для сохранения сообщений в базе данных, отправленных клиентами.

Существует очередь, которая будет заполнена пользовательским адаптером. Сконфигурированный активатор службы опрашивает эту очередь и отправляет сообщение в управляемый bean-компонент Spring. Все ошибки будут записаны в канал ошибок и будут обработаны службой. Конфигурация пока работает отлично.

Меня беспокоит то, что если база данных недоступна, сервис-активаторы опрашивают все входящие сообщения из очереди и помещают их в канал ошибок. Есть ли способ запретить сервис-активатору опрашивать сообщение, если база данных явно недоступна, например, отправив тестовый запрос?

Моя конфигурация:

<int:channel id="inChannel">
   <int:queue />
</int:channel>
<bean id="service" class="some.service.Service" />
<int:service-activator ref="service" 
      method="write" input-channel="inChannel">
   <int:poller fixed-rate="100" task-executor="srvTaskExecutor" 
      receive-timeout="90" error-channel="errChannel" />        
</int:service-activator>
<task:executor id="srvTaskExecutor" pool-size="2-10" 
      queue-capacity="0" rejection-policy="DISCARD" />
<int:channel id="errChannel" />
<int:service-activator input-channel="errChannel" 
      ref="errorService" method="write"/>

Привет.

1 Ответ

1 голос
/ 16 февраля 2012

Если вы дадите сервисному активатору опроса «id», вы можете ссылаться на этот экземпляр и вызывать start () или stop () для него в зависимости от того, доступна БД или нет. Скорее всего, вы также захотите установить auto-startup = "false" на этот активатор службы.

Кроме того, вы даже можете определить элемент «control-bus» и затем отправлять сообщения, такие как «myActivator.start ()» и «myActivator.stop ()», на входной канал этой управляющей шины.

Надеюсь, это поможет, Mark

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...