我有两个问题:
我想知道是否有任何工具可用于获取放入 mq 的 java 对象。如果是,您能否提供代码片段以从 mqqueue 获取 java 对象消息。
是否可以不从队列中删除消息但读取最新删除的消息。类似于当您运行代码时,它应该读取队列中存在的最新消息。
如果理解上述查询有困难,请告诉我。
我有两个问题:
我想知道是否有任何工具可用于获取放入 mq 的 java 对象。如果是,您能否提供代码片段以从 mqqueue 获取 java 对象消息。
是否可以不从队列中删除消息但读取最新删除的消息。类似于当您运行代码时,它应该读取队列中存在的最新消息。
如果理解上述查询有困难,请告诉我。
关于您的第二个查询:
是的,我们可以读取队列中的最新消息,而无需将其从队列中删除。我们称之为浏览消息。
您将不得不使用一些消息获取选项,例如MQGMO_BROWSE_FIRST
. 在发出带有 GMO 的 MQGET MQGMO_BROWSE_FIRST 之后,我们需要发出带有 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,并从输入消息中设置变量的值。