我正在寻求利用Spring Integration的Resequencer,我正在尝试创建一个消息存储来支持它。我们使用SQL Server作为我们的数据库解决方案。
在查看文档时,我对我的消息存储表应该(或可能)的样子没有很好的理解:
在下面文档的代码段中,看起来有一些带有“:”语法的选项可以在消息属性上插入和/或查询。
<int-jdbc:outbound-gateway
update="insert into foos (id, status, name) values (:headers[id], 0, :payload[foo])"
request-channel="input" reply-channel="output" data-source="dataSource" />
<int-jdbc:outbound-gateway
update="insert into foos (status, name) values (0, :payload[foo])"
request-channel="input" reply-channel="output" data-source="dataSource"
keys-generated="true"/>
那么有一个完整的令牌名称列表吗? “id”是否作为标题映射中的哈希?它是否对应于名为“id”的邮件头?对于“:payload [foo]”,什么是“foo”代表什么?是否建议使用与不同消息属性对齐的列类型?
我真的在寻找指导:
答案 0 :(得分:1)
模式位于jar中,可以找到in the github repo。
您需要使用与您正在使用的Spring Integration版本相对应的架构。
是的,headers[id]
表示id
标题。
payload[foo]
假设有效负载为Map
且密钥为foo
。
您可以使用任何SpEL表达式,例如,getFoo()
的对象可以使用payload.foo
。
网关不会对邮件存储区起作用 - 它们会作用于您的业务表。
答案 1 :(得分:1)
spring-integration-jdbc
jar包含以下脚本:https://github.com/spring-projects/spring-integration/tree/master/spring-integration-jdbc/src/main/resources/org/springframework/integration/jdbc
您可以在哪里找到SQL Server的脚本。
<int-jdbc:message-store>
组件利用围绕这些表的操作。
最后,您只需要向bean提供对相应组件的引用,例如:
<resequencer message-store="jdbcMessageStore">
建议不要手动使用MessageStore
表格:仅使用JdbcMessageStore
。