Spring 集成 JMS 轮询器以在轮询之间保留会话

问题描述 投票:0回答:1

我在 IBM MQ Series 队列上有一个 Spring Integration JMS 轮询器。当使用 IBM MQ Explorer(IBM 的基于 Eclipse 的队列浏览器应用程序)并查看队列的状态时,我看到应用程序的队列句柄状态在每个轮询周期中出现/消失。这是预期的行为吗?是否可以在轮询之间保留队列会话?

示例代码为;

IntegrationFlows.from(
  Jms.inboundAdapter(connectionFactory).destination(myQueue),
  e -> e.poller(Pollers.fixedDelay(Duration.ofMillis(1000)))
)
.log(INFO, "Read Queue " + myQueue, m -> m)
.channel(myDirectChannel)
.get();

使用 spring-integration-jms 5.5.7 和 com.ibm.mq.allclient 9.1.5。

spring-jms spring-integration-dsl spring-integration-jms
1个回答
0
投票

实际上,是的 - 这是预期的行为。在最简单的场景中,会为每条消息创建、使用和删除整个 JMS 连接和会话。这显然是非常低效的。

您可以使用缓存连接工厂来外部化 JMS 连接和会话的管理,以避免这种行为。

© www.soinside.com 2019 - 2024. All rights reserved.