【问题标题】:Need to change the JMS_IBM_Character_Set Property value while sending request to IBMMQ with Apache Camel and Spring Boot使用 Apache Camel 和 Spring Boot 向 IBMMQ 发送请求时需要更改 JMS_IBM_Character_Set 属性值
【发布时间】:2020-12-03 15:31:43
【问题描述】:

用例:我正在使用 Apache camel 从 Spring Boot 应用程序向 IBM MQ 侦听器发送请求,在发送时我必须更改 MQ JMS 属性 JMS_IBM_Character_Set=UTF-8 但这些更改没有在 Listener 端反映

谁能帮助我如何使用 Apache Camel 更改 IBM MQ 的属性值

// 请求队列 - 一个方向

@Component
public class RequestRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        from("direct:request").
        setProperty("JMS_IBM_Character_Set", constant("true")).
        to("jms:REQUEST.Q1?disableReplyTo=true")
        .log("Received Body is  ${body}   and header info is   ${headers}  "); 
    }
}

//在一个请求-回复队列之下

@Component
public class RequestReplyRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        from("direct:request-reply").setProperty("JMS_IBM_Character_Set", constant("true"))
                .to("log:like-to-see-all?level=INFO&showAll=true&multiline=true")
                .to("jms:REQUEST.Q1?ReplyTo=REPLY.Q1&exchangePattern=InOut")
                .log("Request-reply Body is  ${body}   and header info is   ${headers}  ");

        from("jms:REPLY.Q1")
                .log("Received Body is  ${body}   and header info is   ${headers}  ");
    }

}

【问题讨论】:

  • 你想要 37 而不是 UTF-8 对吗?
  • 您能否详细说明您如何知道它没有反映在 Listener 端?
  • 我想使用 UTF-8
  • MyApp (Produce Q1) ---------------- >OtherApp(Q1 -Listener) MyApp(Q2 Listener)
  • JMS 默认是 UTF-8,我想你希望骆驼也发送 37,我在你的第一个问题中解释了这一点。

标签: spring spring-boot apache-camel ibm-mq mq


【解决方案1】:

当我在 2017 年使用 JMS 客户端在 IBM MQ 上发布消息时,我无法成功。我将 jms 客户端更改为 IBMMQ.jar,以便放置带有标题的消息。我建议你可以阅读 Apache camel 网站上的 JMS 文档。另外,尝试使用“allowAdditionalHeaders”

【讨论】:

  • 感谢您的回复我没有得到正确的例子,如何使用“allowAdditionalHeaders”属性,如果我像下面这样使用我没有收到任何错误,但我的标题值没有反映在 IBM MQ 侦听器端。 to("jms:REQUEST.Q1?disableReplyTo=true&allowAdditionalHeaders=JMS_IBM_Character_Set=UTF-8")
  • 能否请您提供任何使用 spring boot 的 allowAdditionalHeaders 属性的示例
  • 如果您将属性设置为 true,则将交换标头值设置为 setHeader headerName="JMS_IBM_MQMD_XXXX"
  • 非常感谢,它工作正常,有问题我只提到了单向队列,但是如果再次对请求-回复队列进行相同的测试,它没有设置,是否有任何改变,请你告诉我
  • 我更改了问题并添加了请求队列和请求-回复队列,您的解决方案适用于请求队列,您能否也提供请求-回复队列模式的解决方案,在其他文件中我添加了 JMS_IBM_Character_Set交换对象中的值,exchangeRequest.getIn().setHeader("JMS_IBM_Character_Set", "UTF-8");
猜你喜欢
  • 2020-04-06
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
相关资源
最近更新 更多