Spring 集成 - Microsoft SQL Server 2012 的消息存储配置

Spring Integration - Message Store configuration for Microsoft SQL Server 2012

我使用 JDBC 在 Spring 集成中设置了一个 MessageStore,下面是我的配置:

<bean id="queryProvider" class="org.springframework.integration.jdbc.store.channel.MySqlChannelMessageStoreQueryProvider" />

<!-- JDBC message store configuration -->
<bean id="store" class="org.springframework.integration.jdbc.store.JdbcChannelMessageStore">
    <property name="dataSource" ref="basicDataSource" />
    <property name="channelMessageStoreQueryProvider" ref="queryProvider" />
    <property name="region" value="TX_TIMEOUT" />
    <property name="usingIdCache" value="true" />
</bean>

我的基础数据库是 Microsoft SQL Server 2012,启动服务器时出现以下异常:

nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'LIMIT'.
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:639)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:664)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:704)

我该如何解决这个问题?

实现 SqlServerChannelMessageStoreQueryProvider 并且不要使用 MySqlChannelMessageStoreQueryProvider 的最佳方法,因为那些 RDBMS 供应商使用不同的 DML。

欢迎大家踊跃投稿JIRA ticket and even contribute