Spring integration 在Spring集成中定制jdbcChannelMessageStore

Spring integration 在Spring集成中定制jdbcChannelMessageStore,spring-integration,Spring Integration,我对SI比较陌生(我说“相对”,因为我在SI版本0.6到1中做了一些工作,但当时我不得不停下来,现在我在4.2.5中又开始了),现在我正在为POC编写一些原型。在其中一个示例中,我配置了一个由jdbcChannelMessageStore支持的通道,我想用一种简单的方式对其进行自定义。将列消息字节从bytea更改为text 因此,我更改了schema-postgresql.sql以包含该更改,并希望我只能为INSERT重写jdbc语句。但是,即使语句本身很容易更改,设置参数也不容易,因为它被隐藏

我对SI比较陌生(我说“相对”,因为我在SI版本0.6到1中做了一些工作,但当时我不得不停下来,现在我在4.2.5中又开始了),现在我正在为POC编写一些原型。在其中一个示例中,我配置了一个由jdbcChannelMessageStore支持的通道,我想用一种简单的方式对其进行自定义。将列消息字节从bytea更改为text

因此,我更改了schema-postgresql.sql以包含该更改,并希望我只能为INSERT重写jdbc语句。但是,即使语句本身很容易更改,设置参数也不容易,因为它被隐藏在jdbcTemplate.update方法内的lambda中。因此,唯一的解决方案是重写整个addMessageToGroup方法,这似乎根本不是一个好的解决方案,因为它比简单的jdbc插入包含更多的逻辑

所以,我最后做的就是把我的代码评论为//非常大的黑客行为。我重写了DefaultLobHandler,使其实际上不使用lob,而是使用setString(…)

因此,我有一个问题和一个建议:

有没有一种方法可以自定义JdbcChannelMessageStore,使其拥有我们自己的模式结构和/或语句,而不必使用这种“大黑客”之类的东西

如果没有更好的方法,我是否可以建议至少将准备好的语句字段设置器放在它自己的受保护(或公共)方法上,而不是放在jdbcUpdate中的lambda


提前感谢。

我们可能应该更容易重写该逻辑,也许可以通过将其委托给可重写的方法


.

我们可能应该更容易重写该逻辑,也许可以通过将其委托给可重写的方法


.

我希望我有时间这样做,实际上这不是一个大的改变,我认为阅读贡献者指南比编写代码需要更多的时间…)没问题-如果你想跟踪它,我打开了一个。我希望我有时间这样做,实际上这不是一个很大的变化,我认为阅读贡献者指南比编写代码需要更多的时间…:)没问题-如果你想跟踪它,我打开了一个。