我目前正在从一个充满事务(消息)的远程队列中读取数据。我通过访问队列和测量记录的大小来阅读它。
getOptions.options = MQC.MQGMO_CONVERT + MQC.MQGMO_WAIT;
queue.getCurrentDepth();
仅当队列的大小大于 0 时。我继续获取消息。
我的问题是,对于某些消息,我收到以下错误:MQJE001:完成代码“2”,原因“2033”。
但仅对于某些消息,有趣的是我有一个自定义重试变量,第三次重试得到一条空白消息。
我可能的解决方案:
起初我以为它可能是 waitInterval,我一直在将它从 150 毫秒更改为 30 秒。对于某些消息,我在不到 100 毫秒的时间内正确接收了它们。但是给我问题的消息占用了所有的waitInterval然后给出错误并得到空白消息到第三次重试。
第二个测试是验证 MQMessage 类的参数,我原来有:
消息类型:8
编码:273
格式:
字符集:0
当我正确收到一条消息时,以下参数仍然存在:
消息类型:8
编码:273
格式:MQSTR
字符集:819
当我在第三次重试时收到导致错误 2033 的消息时,我收到一条空白消息并且参数更改为以下内容:
消息类型:8
编码:273
格式:
字符集:819
我开始认为队列中的消息没有指示正确的格式。所以我联系了支持人员,他们确认所有消息都具有正确的转换标头。
所以我仍然怀疑为什么这个问题,如果有人遇到过类似的事情,我会很感激你的评论。谢谢。
潇潇雨雨
相关分类