gpt4 book ai didi

java - 是否可以更改传出 MQMessage 的 PutApplicationType?

转载 作者:行者123 更新时间:2023-11-30 05:52:43 27 4
gpt4 key购买 nike

我有类似 MQ 消息的消息转发器/路由器之类的东西。我正在尝试根据某些规则转发消息。这种转发是通过从一个队列接收消息,创建一个新消息(具有相同或修改的内容)并将其放入另一个队列来完成的。转发器的存在应该尽可能透明。

目前我的问题是 PutApplicationType 消息属性。看起来我无法更改此属性。我有 .NET 和 Java 示例实现,我只是想简单地使用:

MQMessage forwardedMessage = new MQMessage();
forwardedMessage.putApplicationType = CMQC.MQAT_UNIX;

我尝试使用什么值并不重要。 .NET 版本始终使用 MQAT_DEFAULT/MQAT_WINDOWS_NT 发送消息,而 Java 版本始终使用 MQAT_JAVA 发送消息。

是否可以更改此 header ?如果我不更改该值,是否会导致遗留系统出现问题?为什么不能更改值?

顺便说一句。转发原始消息也不起作用 - 我的应用程序也会更改 PutApplicationType 属性。

编辑:如果我使用 native C API,我是否能够控制此属性的内容?

最佳答案

正如 T.Rob 所说,您需要阅读手册(WMQ Using Java 或 WMQ Using .Net)。转发消息不是上面列出的简单任务。有几个选项/参数需要正确设置。

下面是一段删除了所有异常处理的 Java 代码片段:

int openInputOptions  = MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED + MQC.MQOO_SAVE_ALL_CONTEXT;
int openOutputOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_PASS_ALL_CONTEXT;

MQQueue _inQ = _qMgr.accessQueue( inQueueName, openInputOptions, null, null, null );

MQQueue _outQ = _qMgr.accessQueue( outputQueueName, openOutputOptions, null, null, null );

MQGetMessageOptions getOptions = new MQGetMessageOptions();
getOptions.options = MQC.MQGMO_NO_WAIT + MQC.MQGMO_FAIL_IF_QUIESCING;

MQMessage mqMsg = new MQMessage();

mqMsg.correlationId = MQC.MQCI_NONE;
mqMsg.messageId = MQC.MQMI_NONE;

_inQ.get(mqMsg, getOptions);

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING + MQC.MQPMO_PASS_ALL_CONTEXT;
pmo.contextReference = _inQ;

_outQ.put(mqMsg, pmo);

关于java - 是否可以更改传出 MQMessage 的 PutApplicationType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com