【问题标题】:Empty message and actual message MQ client issue空消息和实际消息 MQ 客户端问题
【发布时间】:2013-04-04 18:50:55
【问题描述】:

我正在将消息从一个队列发送到另一个队列,例如在我的输入队列中,如果有一条空消息,然后是一条实际消息,当代码开始排队时,它不会向我发送实际消息一旦它看到第一条空消息。

Import queue:

     -> empty message
Test -> actual message

这是正在接收和发送的消息。

if (mqMsg.MessageLength > 0 && mqMsg.DataLength > 0)
{
messageData = mqMsg.ReadString(mqMsg.MessageLength);
}

mqQueue.Put(mqMsg, mqPutMsgOpts);

这就是我的实现方式:

while(if any message is available)
{
  //go a read/get
  mqMsg = new MQMessage();
  mqGetMsgOpts = new MQGetMessageOptions();
  mqQueue.Get(mqMsg);
  if (mqMsg.MessageLength > 0 && mqMsg.DataLength > 0)
  {
   //posted to send method
  }    
}

另一种方法(发送) - 发送它。

 mqPutMsgOpts = new MQPutMessageOptions();
 mqQueue.Put(mqMsg, mqPutMsgOpts);

我该如何处理,即使有空消息,队列也会继续发送消息?

【问题讨论】:

  • Perhaps you should employ an Else` 块在您的代码中.. 使用Reputation points higher than 1 会认为您了解如何构造基本条件语句MSDN if Else
  • 您在寻找某种循环吗?喜欢while 循环?我不知道问题出在哪里。
  • 我还不太明白这里有什么问题。你能提供一些澄清吗?空消息是什么意思?没有数据/正文的消息?
  • @Shashi - 是的,它没有数据/正文。 IE。数据长度为零。

标签: c# .net websphere ibm-mq


【解决方案1】:

只检查 MessageLength 就足够了。

if(mqMsg.MessageLength > 0)
{
     // Send message to another queue.
}

但重要的是要了解为什么会有没有正文的消息并解决该问题。为什么有人会发送没有正文的消息?

【讨论】: