【问题标题】:how can spring integration 5.5.x use mysql as message storespring integration 5.5.x如何使用mysql作为消息存储
【发布时间】:2021-12-09 08:06:13
【问题描述】:

我正在使用 Mysql 作为消息存储数据库,刚刚尝试升级到 Spring Integration 5.5.5,但发现架构发生了变化, 在 INT_MESSAGE_GROUP 表中需要一个 CONDITION 列,虽然我可以通过在 CONDITION 周围添加反引号来创建表,但 JdbcMessageStore.java 中有一个 sql

    GET_GROUP_INFO("SELECT COMPLETE, LAST_RELEASED_SEQUENCE, CREATED_DATE, UPDATED_DATE, CONDITION" +
            " from %PREFIX%MESSAGE_GROUP where GROUP_KEY=? and REGION=?")

它不能工作? 有什么解决方法吗?

【问题讨论】:

    标签: spring-integration spring-integration-jdbc


    【解决方案1】:

    是的,我现在明白了。看起来condition 是 MySQL 中的保留字:Is condition considered a special word in mySQL?。不知道我是怎么错过的,但这被认为是一个错误,必须从框架的角度真正修复。

    解决方法取决于您对 JdbcMessageStore 所做的事情。如果您从队列通道中使用它,那么最好查看JdbcChannelMessageStorehttps://docs.spring.io/spring-integration/docs/current/reference/html/jdbc.html#jdbc-message-store-channels

    如果您真的要处理聚合器,那么您必须扩展 JdbcMessageStore 并覆盖 getGroupMetadata()setGroupCondition(),其中 CONDITION 用于 SQL 语句。

    或者只是看看其他一些不保留CONDITION 字的数据库供应商!

    我将改为通过GROUP_CONDITION 字修复它...

    更新

    框架代码的修复在这里:https://github.com/spring-projects/spring-integration/pull/3687。下一个 Spring Integration 5.5.7 将像这样发布:https://github.com/spring-projects/spring-integration/milestone/80。正好赶上下一个 Spring Boot 版本!

    【讨论】:

    • 谢谢你,Artem,是的,我们有一些聚合案例,
    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2015-04-08
    相关资源
    最近更新 更多