Spring integration 在Spring集成中使用CacheConnectionFactory回复目标

Spring integration 在Spring集成中使用CacheConnectionFactory回复目标,spring-integration,Spring Integration,我已经编写了一个jms出站网关来同步发送/接收消息,并且还使用了CachingConnectionFactory(sessionCacheSize=5)。现在,spring集成手册说它可能会导致OutOfMemory错误,因为它使用新的选择器创建了新的消费者。。。 手册建议改为使用,但这样会使消息接收变得异步 请大家提供更多信息,了解在什么情况下使用CacheConnectionFactory回复目标会导致OutOfMemory错误,如果不建议这样做,那么如何使消息接收同步 配置 <int

我已经编写了一个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>

我认为

消费者被缓存,每个消费者都有一个不同的(唯一的)消息选择器,因此不能重复使用


正如警告所说的,关闭CCF中的缓存使用者,或者改用

这是消费者的问题还是生产者的问题,因为我还看到每个发送都有不同的生产者对象?不,生产者只按目的地缓存,所以你不应该看到它们在增长(除非
cacheProducers
为false-默认值为true);使用者按目标和选择器进行缓存。如果启用跟踪级别日志记录,您将获得缓存管理的完整详细信息。请记住,默认会话缓存大小为1,因此如果您有并发请求,您可能会看到创建新的生产者;请考虑增加缓存大小-有关详细信息,请参阅javadocs。