gpt4 book ai didi

java - 没有回复监听器的 Spring Integration JMS 网关

转载 作者:太空宇宙 更新时间:2023-11-04 13:16:10 27 4
gpt4 key购买 nike

我在使用 Spring Integration 时遇到以下情况的挑战。

同一个应用程序(Spring Integration)在多个服务器上运行,对于 JMS(出站),我使用 jms:outbound-channel-adapter,但检查出站网关时,我注意到有用于调整 JMS 队列的参数(显式-qos-启用、生存时间等),但问题是“回复监听器”,因为应用程序在连接到其他服务器(其他网关)的多个服务器上运行,所以回复消息可以由不是发送 JMS 消息的服务器的其他服务器处理。

我的疑问是如何在没有任何“回复监听器”的情况下配置“出站网关”,这意味着没有配置“回复监听器”(预先创建的线程不会创建一个可能永远不会收到回复的线程,并且会无缘无故地持有一个线程(监听器线程))。

阅读文档后我明白这是不可能的。这是真的吗?就像没有“回复监听器”就无法使用出站网关一样?

最佳答案

让我引用JmsOutboundGateway源码一点:

if (logger.isWarnEnabled()) {
logger.warn("The gateway cannot use a reply listener container with a specified destination(Name/Expression) " +
"without a 'correlation-key'; " +
"a container will NOT be used; " +
"to avoid this problem, set the 'correlation-key' attribute; " +
"some consumers, including the Spring Integration <jms:inbound-gateway/>, " +
"support the use of the value 'JMSCorrelationID' " +
"for this purpose. Alternatively, do not specify a reply destination " +
"and a temporary queue will be used for replies.");
}

稍后在 handleRequestMessage 中:

if (this.replyContainer == null) {
jmsReply = this.sendAndReceiveWithoutContainer(requestMessage);
}

所以,你可以使用<int-jms:outbound-gateway>没有reply-listener 。像这样的事情:

<int-jms:outbound-gateway request-destination="requestQueueA" 
reply-destination="replyQueueB"
connection-factory="connectionFactory"/>

关于java - 没有回复监听器的 Spring Integration JMS 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com