如何在 Spring 集成中将消息保留在没有订阅者的频道中?

How to keep messages in channel with no subscriber in Spring Integration?

我在 Spring Integration 4.1 项目中有以下设置:

当我停止链时发生的事情是消息从主题中消失,我希望它们保留在那里直到链再次被激活(很像 JMS 队列)。我怎样才能实现这种行为?

我已经尝试过这种方法,但我从 "back up channel" 收到错误消息,指出它没有任何订阅者来处理消息:

1 - 发布订阅者通道

2 - 链是 stopped/started

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

所以,问题是:我应该如何配置我的频道,以便在再次添加订阅者之前消息一直保留在那里?可能吗?

正确;只需将通道设置为 QueueChannel(添加一个 <queue/> 子元素)并向链中添加一个轮询器。