【问题标题】:Cannot send ObjectMessage to IBM MQ无法将 ObjectMessage 发送到 IBM MQ
【发布时间】:2020-06-18 01:32:41
【问题描述】:

如何向 IBM MQ 发送对象消息?
我的 Java 代码片段:

QueueConnectionFactory cf;
QueueConnection conn;
MQQueueSession sess;
QueueSender sender;
Queue putQueue = null;
Message RQMessage
//...
cf = new MQQueueConnectionFactory();
((MQQueueConnectionFactory)cf).setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
((MQQueueConnectionFactory)cf).setHostName(host_ip);
((MQQueueConnectionFactory)cf).setPort(1414);
((MQQueueConnectionFactory)cf).setQueueManager(MQMgrName);
((MQQueueConnectionFactory)cf).setChannel(MQChannel);
((MQQueueConnectionFactory)cf).setCCSID(1251);
conn = cf.createQueueConnection(" ", " ");
sess = (MQQeueSession) conn.create
putQueue = ((MQQueueSession)sess).createQueue("queue://"+MQMgrName+"/"+putQueueName);
sender = (MQQueueSender) sess.createSender(putQueue);
MyClass rq_obj = new MyClass();
//MyClass is serializable
rq_obj.setid("1111");
System.out.println(rq_obj.toString());
//got string with my object
RQMessage = sess.createObjectMessage(rq_obj);
RQMessage.setStringProperty("prop_name", "prop_value");
Sender.send(RQMessage);
sess.commit();

由于这段代码,我收到一条带有property prop_name = prop_value 的消息,但消息的正文为空。我不知道为什么,但也许我应该更改我的连接工厂的属性(((MQQueueConnectionFactory)cf).setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);) 但即使是这样,我也不知道我需要什么属性。

【问题讨论】:

  • 尝试将消息类型从 Message 更改为 ObjectMessage,但没有帮助

标签: java ibm-mq mq


【解决方案1】:

我更喜欢将我的数据作为 XML 或 JSON 发送,而不是作为对象发送。同样在几年前,JVM(发送方和接收方)必须处于同一版本级别,否则无法理解/翻译对象。

来自IBM MQ Knowledge Center,它说你应该这样做:

ObjectMessage objMessage = session.createObjectMessage();
objMessage.setObject(myObj);
publisher.send(objMessage);

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2021-08-02
    • 2016-04-08
    相关资源
    最近更新 更多