Не удается отправить ObjectMessage в IBM MQ - PullRequest
0 голосов
/ 17 июня 2020

Как я могу отправить объектное сообщение в 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);), но даже если это так, я не знаю, какие свойства мне нужны.

1 Ответ

0 голосов
/ 17 июня 2020

Я предпочитаю отправлять свои данные как XML или JSON, а не как объект. Также годы спустя go, JVM (отправитель и получатель) должны были быть на одном уровне версии, иначе объект не мог быть понят / переведен.

Из Центра знаний IBM MQ, он говорит, что вы должны делать это следующим образом:

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