Spring Integration 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")
    );
}

07-24 15:32