gpt4 book ai didi

java - 需要向将发送到 IBM MQ websphere 的消息添加 header

转载 作者:行者123 更新时间:2023-12-01 22:59:17 25 4
gpt4 key购买 nike

我不确定如何将消息头添加到我们发送到 IBM MQ websphere 服务器的消息中。下面是我尝试使用的代码,但出现异常:

创建与服务器的连接

        qMgr = new MQQueueManager(queueMgr, props);

int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
| MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE;
queue = qMgr.accessQueue(queueName, openOptions);
message = new MQMessage();

发送消息

public String sendMessage(){

MQPutMessageOptions pmo = new MQPutMessageOptions();


message.format = MQC.MQFMT_STRING;
message.feedback = MQC.MQFB_NONE;
message.messageType = MQC.MQMT_DATAGRAM;

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

message.writeString(sMsg);
queue.put(message,pmo);
}

我尝试使用以下代码添加标题

((TextMessage)message).setStringProperty(header_name,header_value);

但是我收到异常java.lang.ClassCastException:com.ibm.mq.MQMessage 无法转换为javax.jms.TextMessage

我被困在这里了。如果解决了这个谜题就完成了。

最佳答案

为什么要将 Java SE MQ API 调用与 JMS 调用混合在一起?

在手册中,Java 版 WebSphere MQ 类的“处理消息属性”部分:

Function calls to process message handles have no equivalent in WebSphere MQ classes for Java. To set, return, or delete message handle properties, use methods of the MQMessage class.

因此,你为什么不简单地这样做:

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

message.format = MQC.MQFMT_STRING;
message.feedback = MQC.MQFB_NONE;
message.messageType = MQC.MQMT_DATAGRAM;
message.messageId = MQC.MQMI_NONE;
message.correlationId = MQC.MQCI_NONE;

message.setStringProperty(header_name,header_value)

message.writeString(sMsg);
queue.put(message,pmo);

最后一点,请不要回复说您不能这样做,因为您正在使用 WMQ v6。 WMQ v6 大约在 2 年前就不再支持,因此您必须升级到 WMQ v7.*(最好升级到 WMQ v7.5)。

关于java - 需要向将发送到 IBM MQ websphere 的消息添加 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557820/

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