【发布时间】:2018-06-28 10:44:39
【问题描述】:
我试图弄清楚如何从 JMS 标头中提取一个值,以便我可以将它动态地路由到特定的队列。我花了几个小时尝试各种方法来提取价值,但我没有成功。请参阅下面的 sn-p ,它解释了我所追求的。任何帮助甚至指出我正确的方向都将不胜感激。
// fetch the queue name from the JMS header
String queue = "jms:queue:" + header("__DestinationQueue").toString();
choice = choice
.when(header("Match").isEqualTo("true"))
.id("JMSDaemonOutboundRouteBuilder")
.to(queue);
choice = choice
.otherwise().bean(UnroutableMessageLogAction.class)
.bean(EndConversationAction.class, "process")
.bean(ESBMessageCompleteAction.class, "process")
.to("jms:queue:UNROUTED").endChoice();
数据肯定包含在标题中(我已经对标题值运行 .isEqualTo 比较来确认这一点)我只是在将实际值提取到字符串中时遇到问题。
【问题讨论】:
-
如果你想动态路由,为什么不使用主题呢?如果您担心持久性,请使用持久订阅。此外,您没有指定 __DesitnationQueue 的设置。我认为它应该设置为您要获取的属性的名称:“JMSDestination”。
-
你检查过这个吗?可能类似:stackoverflow.com/questions/46434130/…
标签: java spring jms activemq spring-jms