从今天开始,我们将Camel和ActiveMQ与默认JMS和"org.apache.camel.component.jms.JmsComponent"
一起使用。当使用像"myJmsComponent:queue:myqueue"
这样的队列时,“JmsDestination”标题包含“myqueue”。
现在我们想用"org.apache.camel.component.amqp.AMQPComponent"
代替AMQP。
当使用"myAmqpComponent:queue:myqueue"
使用相同的队列时,消息的“JmsDestination”标头不再包含“myqueue”,而是包含动态系统名称,例如“org.apache.qpid.amqp_1_0.jms.impl.QueueImpl@718762d8” ,我们无法在其他地方找到队列名称。
在这种情况下我们如何检索队列名称?
答案 0 :(得分:1)
似乎您正在使用旧版本,该版本从Qpid引入了现已弃用的AMQP 1.0 JMS客户端,因此我建议使用更新的版本,使用支持的Qpid JMS客户端。
您显示的输出似乎代码只是在从Message返回的Destination实例上执行toString,并且该对象没有实现正确的toString,因此您获得默认值。您应该使用返回的目标类型(队列或主题)中的getQueueName或getTopicName。