2016-05-16 131 views
1

我有一个spring集成实现,其中有两个客户订阅服务器监听相同的JMS主题。我在两个实现中都使用JDBC消息存储(不同的REGIONS)来保存传入的消息。在处理数据我得到异常:Spring集成聚集错误

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0 

我知道这是JIRA问题:https://jira.spring.io/browse/INT-2912

正如现在我不能升级Spring版本。我无法理解解决方法“解决方法是始终使用不同的groupKey或为每个消息存储使用单独的表,我们还需要将REGION列添加到INT_GROUP_TO_MESSAGE。”

如何创建不同的groupKey?

我实现如下:

<bean 
    id="jdbcMessageStore" 
    class="org.springframework.integration.jdbc.JdbcMessageStore" 
    p:dataSource-ref="datasource" 
    p:region="REPORTS"/> 

<si:aggregator 
     send-partial-result-on-expiry="false" 
     message-store="jdbcMessageStore" 
     discard-channel="discardedLogger"/> 

回答

1

的 “groupKey” 提到有相关策略的结果;默认情况下它只使用correlationId标头。

您可以使用correlation-strategy-expression="'foo' + headers['correlationId']"correlation-strategy-expression="'bar' + headers['correlationId']"为每个应用程序使用不同的组密钥。