2015-04-23 3 views
2

У меня есть следующий набор мер в 4.1 проекта Spring Integration:Как сохранить сообщения в канале без подписчика в Spring Integration?

  • -цепь подписался на канал-публикации абонента.
  • Сервисный автобус, который запускает/останавливает цепь.

Что происходит, когда я останавливаю цепочку, является то, что сообщения исчезают из темы, и я бы хотел, чтобы они остались там до тех пор, пока цепь не будет активирована снова (как JMS-очередь). Как я мог добиться такого поведения?

Я попробовал этот подход, но я получаю сообщение об ошибке от «резервного копирования канала» о том, что он не имеет абонентов обрабатывать сообщение:

enter image description here

1 - Канал публикации-подписчика

2 - цепь остановки/начала

3 - шины управления шлюза

4 - я добавил мост и регулярный канал, чтобы действовать в качестве очереди

Это ошибка я с этим решением:

Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers 
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:107) 
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97) 
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
... 30 more 

Итак, вопрос: Как я должен настроить мои каналы поэтому сообщения остаются там до тех пор, пока абонент не будет добавлен снова? Является ли это возможным?

+0

Ну, это в смущении, но я думаю, мне просто нужно добавить элемент 'queue' в объявление канала, чтобы не использовать реализацию' DirectChannel' (которая действительно нуждается в том, чтобы потребитель присутствовал при отправке сообщения ...) – Victor

ответ

2

Исправить; просто сделайте канал QueueChannel (добавьте дочерний элемент <queue/>) и добавьте в него цепочку.

+0

Спасибо, Гэри. Один вопрос: зачем мне нужно добавлять в цепочку poller? – Victor

+0

Так как каналам очереди нужен опроллер, чтобы вытаскивать сообщения - или вы можете объявить полет-опрос по умолчанию на верхнем уровне, –

+0

OK. Это неявное использование не очень интуитивно, но, к счастью, у меня уже было одно объявление для входящего адаптера ... :) – Victor