我有两个问题:
我想知道是否有任何工具可以获取放入mq的java对象。如果是,请提供代码片段以从mqqueue获取java对象消息。
是否可以不从队列中删除消息,而是读取丢弃的最新消息。类似于运行代码时,它应该读取队列中存在的最新消息。
如果您在理解上述问题时遇到困难,请与我们联系。
答案 0 :(得分:0)
关于第二次查询:
是的,我们可以读取队列中的最新消息,而无需将其从队列中删除。我们称之为浏览消息。
您必须使用少量消息获取选项,例如 MQGMO_BROWSE_FIRST
。在使用GMO MQGMO_BROWSE_FIRST发出MQGET之后,我们需要向GMO发出MQGET, MQGMO_BROWSE_NEXT 。我们必须在循环中发出这些MQGET,直到我们到达最后一条消息。
这里清楚地解释了一切: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r1/index.jsp?topic=%2Fcom.ibm.mq.doc%2Ffr12610_.htm
实际上,如果MQ API可以提供类似MQGMO_BROWSE_LAST的东西,那就简单得多了。 但是,它仍然很好,毕竟我们称它为队列(FIFO),而不是堆栈(LIFO)。
关于第一次查询:
我从中理解的是,您希望将java类对象放入队列中。好吧,正如我评论的那样,我们只将消息放入队列中。无论您是放置文本消息还是二进制消息,MQ都足够灵活,可以接受这两种消息。现在,应用程序如何处理消息中的二进制或文本信息。
所以,这真的是你的实现。我会按如下方式实现它:
发送方: 假设我们有一个ObjToBeSent对象,其变量状态为:
ObjToBeSent.Vara=1;
ObjToBeSent.Varb="test";
我将形成如下所示的XML消息,并将在队列中发布:
<ObjToBeSent>
<Vara><Integer>1</Integer></Vara>
<Varb><String>test</String></varb>
</ObjToBeSent>
接收方: 从队列中获取消息。解析XML并获取变量的值以及数据类型。
声明一个对象,例如ObjectReceived,并从输入消息中设置变量的值。