【问题标题】:Fetching string value from JMS header从 JMS 标头中获取字符串值
【发布时间】: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


【解决方案1】:

解决方案是使用 toD 而不是 to which 本机允许路由到 JMS 标头值。链接如下:

http://camel.apache.org/message-endpoint.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多