gpt4 book ai didi

java - DefaultMessageListenerContainer,关于要监听的队列的知识

转载 作者:行者123 更新时间:2023-11-29 05:55:08 35 4
gpt4 key购买 nike

是否有可能在 onMessage 方法内部知道 MessageListener 正在监听哪个队列?

我的 Spring-config(其中一部分):

<bean id="abstractMessageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" abstract="true">
<property name="connectionFactory" ref="connectionFactory" />
<property name="maxConcurrentConsumers" value="5"/>
<property name="receiveTimeout" value="10000" />
</bean>

<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer" parent="abstractMessageListenerContainer">
<property name="destinationName" value="MY.QUEUE" />
<property name="messageListener" ref="myMessageListener" />
</bean>

<bean id="myMessageListener" class="my.package.structure.ListenerClass"></bean>

我的监听类:

public class ListenerClass implements MessageListener {


public void onMessage(Message msg) {

//where do I know from, on which queue the message has been written to?

}

}

是否有开箱即用的解决方案?或者任何自定义解决方案来获取队列/目的地名称?

在后续批处理中是否需要队列...

最佳答案

简单。至少在微不足道的情况下:

msg.getJMSDestination() 将为您提供作为 javax.jms.Destination 对象的目的地。通常 .toString() 返回如下内容:queue://MYQUEUENAME

但是,在某些 JMS 实现中,可能存在多跳队列,例如 WebSphere MQ 中的静态发布/订阅设置,您可能将消息写入一个队列,它会绕着一条路线反弹,最终到达完全不同的路线队列。此外,您可能遇到 ESB 的情况,中间有用于路由消息的逻辑。在这种情况下,在过多依赖 JMSDestination 属性之前需要三思。否则,继续。

关于java - DefaultMessageListenerContainer,关于要监听的队列的知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471030/

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