У меня есть следующий набор мер в 4.1 проекта Spring Integration:Как сохранить сообщения в канале без подписчика в Spring Integration?
- -цепь подписался на канал-публикации абонента.
- Сервисный автобус, который запускает/останавливает цепь.
Что происходит, когда я останавливаю цепочку, является то, что сообщения исчезают из темы, и я бы хотел, чтобы они остались там до тех пор, пока цепь не будет активирована снова (как JMS-очередь). Как я мог добиться такого поведения?
Я попробовал этот подход, но я получаю сообщение об ошибке от «резервного копирования канала» о том, что он не имеет абонентов обрабатывать сообщение:
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
Итак, вопрос: Как я должен настроить мои каналы поэтому сообщения остаются там до тех пор, пока абонент не будет добавлен снова? Является ли это возможным?
Ну, это в смущении, но я думаю, мне просто нужно добавить элемент 'queue' в объявление канала, чтобы не использовать реализацию' DirectChannel' (которая действительно нуждается в том, чтобы потребитель присутствовал при отправке сообщения ...) – Victor