我已经编写了一个jms出站网关来同步发送/接收消息,我也在使用CachingConnectionFactory(sessionCacheSize = 5)。现在Spring集成手册说它可能导致OutOfMemory错误,因为它使用新的选择器创建新的消费者... 而手动建议使用,但这会使消息接收异步。
任何人都可以提供更多见解,在什么情况下,使用CacheConnectionFactory回复目的地会导致OutOfMemory错误,如果不建议这样做,那么如何使消息接收同步?
配置
<int-jms:outbound-gateway
connection-factory="myCacheConnectionFactory"
receive-timeout="5000"
reply-channel="emailChannel"
reply-destination="responseQueue"
request-channel="requestMsgChannel"
request-destination="requestQueue">
</int-jms:outbound-gateway>
答案 0 :(得分:1)
我认为caution in the documentation explains the problem quite clearly。
消费者被缓存,每个人都有一个不同的(唯一的)消息选择器,因此无法重复使用。
正如警告所说,关闭CCF中的缓存消费者,或改为使用<reply-listener/>
。