使用来自队列的activemq,camel选择器选择特定的头消息

时间:2015-07-23 21:59:48

标签: jms apache-camel activemq custom-headers

如何使用队列中的特定标头消息。我正在使用camel activemq。

routebuilder:

.....
    from("activemq:Q1").
      .setHeader("myHeader",xpath(...))
          .to("activemq:Q2")
.....

我尝试使用那些在另一个类中具有特定标题的消息,例如。

....
ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
Exchange exchange = consumerTemplate.receive("activemq:Q2",10000);

String body = exchange.getIn().getBody(String.class);
String customvalue = exchange.getIn().getHeader("myHeader", String.class);
.....

如何才能获得myHeader = 123的消息。

1 个答案:

答案 0 :(得分:5)

您可以使用JMS消息选择器。在Camel使用者端点中,您可以使用 $title = 'Article title'; // Your article title $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('alias')) ->from($db->quoteName('#__content')) ->where($db->quoteName('title') . ' = ' . $db->quote($title)); $db->setQuery($query); try { $alias = $db->loadResult(); // variable has now article alias } catch (Exception $ex) { $alias = null; } if ($alias) { // Do something with alias } 选项:http://camel.apache.org/jms

的长篇大论
selector

虽然我不记得标题的名称是否足够,或者你需要做什么

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader",10000);

%3D是Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader %3D '*'",10000); 编码的。