区分apache camel中使用通配符时调用了哪个队列

Differentiate which queue was called when using wildcards in apache camel

在我的应用程序中,我在 apache camel 中使用通配符并且我定义了这样的路由生成器:

from("activemq:queue:*.processQueue").bean(beanOne,"someMethod");

在发送消息时,我会将消息发送到“{uniqueID}.processQueue”队列,因此我需要获取 uniqueIdbeanOne.

someMethod 里面

完整的 queue 路径在 In 消息的 JMSDestination header 中(例如 JMSDestination 是 queue://test1.processQueue)。您可以使用字符串操作函数来获取所需的 uniqueId.

示例(uniqueId 将是 test1):

@Handler
public void someMethod(@Header("JMSDestination") String jmsDestination) {
    String uniqueId = jmsDestination.substring("queue://".length(), jmsDestination.indexOf(".processQueue"));
}