我当前正在从一个远程队列读取,该队列中填充了事务(消息)。我正在通过访问队列和测量记录的大小来读取它。
但只有一些消息,有趣的是,我有一个自定义的重试变量,第三次重试得到一个空白消息。
我可能的解决方案:
起初,我认为它可能是waitInterval,我一直将它从150毫秒改为30秒。对于某些消息,我在不到100毫秒的时间内正确地得到它们。但是给我带来问题的消息会占用所有的waitInterval,然后给出错误并在第三次重试时得到空白消息。
当我正确获得消息时,以下参数仍然存在:
当我在第三次重试时收到一条导致错误2033的消息时,我会得到一条空白消息,并且参数更改为以下内容:
您将IBM MQ视为一个数据库,这将给您带来各种痛苦。
以下是检索消息的方式:
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = CMQC.MQGMO_WAIT + CMQC.MQGMO_FAIL_IF_QUIESCING;
gmo.waitInterval = 5000; // wait up to 5 seconds
MQMessage receiveMsg = null;
boolean getMore = true;
while(getMore)
{
receiveMsg = new MQMessage();
try
{
// get the message on the queue
queue.get(receiveMsg, gmo);
/*
* Now go do something with the message
*/
}
catch (MQException e)
{
if ( (e.completionCode == CMQC.MQCC_FAILED) &&
(e.reasonCode == CMQC.MQRC_NO_MSG_AVAILABLE) )
{
// No message - loop again
}
else
{
System.out.println("MQException: " + e.getLocalizedMessage());
System.out.println("CC=" + e.completionCode + " : RC=" + e.reasonCode);
getMore = false;
}
}
catch (IOException e)
{
System.out.println("IOException:" +e.getLocalizedMessage());
}
}
当我尝试测试我的非常简单的消息流时,我得到了这个错误: MQJE001:完成代码“%2”,原因“2495”。 我看过与这个问题有关的其他问题,但没有一个解决方案能帮助我解决这个问题。 我也尝试过仅仅部署这个应用程序并将消息放到队列中,但是MQInput节点没有得到任何消息,即使在失败输出(转换)中也是如此,并且MQExplorer在队列中显示了一条消息。 我正在使用本地集成节点和本地队列管理器。
我正在编写一个从MQ读取分段消息的使用者。我使用Spring JMS/Spring集成来处理其他队列。我知道IBM MQ不支持JMS中的消息分段:(这里的相关问题:如何在Spring integration中组装MQ消息段) 下面是我想出的将IBM MQ类用于java和Spring的方法。 MQ对象的Bean定义。 消费者代码: 使用这种配置,使用者可以按照需要工作,它将所有分段的消息组装起来,作
你能给我解释一下这个问题的原因吗?非常感谢。
使用以下SSLCipherSuite创建MQQueueManager对象时: 我想问题出在MQ配置端,因为我的jre 返回“TLS_RSA_WITH_AES_128_CBC_SHA”作为密码套件之一。但我不确定QMgr配置到底出了什么问题。谢谢你的提示。