2016-05-16 128 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']"爲每個應用程序使用不同的組密鑰。