MessageStore 通过 Spring Integration+ Java Config 支持 QueueChannel

MessageStore backed QueueChannel with Spring Integration+ Java Config

Spring 集成 reference guide 是指使用 MessageStore 实现来为 QueueChannel 提供持久性。

它被多次提及,但所有示例都使用 XML 配置,即

<int:channel id="dbBackedChannel">
    <int:queue message-store="channelStore"/>
</int:channel>

<bean id="channelStore" class="o.s.i.jdbc.store.JdbcChannelMessageStore">
    <property name="dataSource" ref="dataSource"/>
    <property name="channelMessageStoreQueryProvider" ref="queryProvider"/>
</bean>

但是 QueueChannel 的实现没有设置 MessageStore 的方法

那么如何在不使用 XML 配置的情况下创建带有 MessageStore 的 QueueChannel?

逆向工程 XML 配置所做的,这就是答案。

您将 MessageStore 包装在 MessageGroupQueue

所以它看起来像这样

@Bean
public MessageChannel messageStoreBackedChannel() {
    return new QueueChannel(
        new MessageGroupQueue(<<MessageStoreImplementation>>, "Group ID")
    );
}