支持消息存储库的表的建议数据库模式是什么?

时间:2014-09-08 18:51:04

标签: java spring spring-integration

我正在寻求利用Spring Integration的Resequencer,我正在尝试创建一个消息存储来支持它。我们使用SQL Server作为我们的数据库解决方案。

在查看文档时,我对我的消息存储表应该(或可能)的样子没有很好的理解:

17.4 JDBC Message Store

在下面文档的代码段中,看起来有一些带有“:”语法的选项可以在消息属性上插入和/或查询。

<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”代表什么?是否建议使用与不同消息属性对齐的列类型?

我真的在寻找指导:

  1. 我的数据库架构应该是什么? (我有什么选择)
  2. 如何在SI配置中映射进出此模式? (即,如何告诉SI消息的哪些部分转到哪些列)

2 个答案:

答案 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