мы используем 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"/>
Привет.