2013-12-12 2 views
0

В настоящее время проблема связана с ошибкой ввода-вывода. и я не знаю, как указать, где произошла ошибка. Это произошло, когда я получаю очередь сообщений из очереди. Ниже приведена трассировка стека ошибки.Ошибка ввода-вывода при получении очереди сообщений из Websphere MQ

StackTrace: at AlertTrigger.Data.ServiceAgents.WebSphereAgent.GetMessageQueue(String queueManagerName, String queueName) 
    at AlertTrigger.Business.AlertTriggerComponent.QueueListener() 

Ниже приведен код для GetMessageQueue:

public string GetMessageQueue(string queueManagerName, string queueName) 
{ 
    MQQueueManager mqQueueManager; 
    MQQueue storeQueue; 
    string result = string.Empty; 

    try 
    { 
     MQMessage mqMessage = new MQMessage(); 
     MQGetMessageOptions mqGetMessageOption = new MQGetMessageOptions(); 

     mqGetMessageOption.Options = MQC.MQGMO_WAIT; 
     mqGetMessageOption.WaitInterval = 15000; 

     mqQueueManager = new MQQueueManager(queueManagerName); 

     storeQueue = mqQueueManager.AccessQueue(queueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING); 

     storeQueue.Get(mqMessage, mqGetMessageOption); 

     result = mqMessage.ReadString(mqMessage.DataLength); 

    } 
    catch (MQException MQEx) 
    { 
     // Close request Queue if still opened 
     if (storeQueue != null && storeQueue.OpenStatus) 
      storeQueue.Close(); 
     // Close Queue manager if still opened 
     if (mqQueueManager != null && mqQueueManager.OpenStatus) 
      mqQueueManager.Close(); 

     throw new MQAdapterException(MQEx.Reason.ToString()); 
     //throw new MQAdapterException("Error Code: " + MQAdapterErrorReasons.GetMQFailureReasonErrorCode(MQEx.Reason)); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(ex.Message); 
    } 
    finally 
    { 
     // Close request Queue if still opened 
     if (storeQueue != null && storeQueue.OpenStatus) 
      storeQueue.Close(); 
     // Close Queue manager if still opened 
     if (mqQueueManager != null && mqQueueManager.OpenStatus) 
      mqQueueManager.Close(); 
    } 

    return result; 
} 

Я надеюсь, что вы можете помочь мне в этом, как я совершенно новой для WebSphere MQ.

ответ

0

Является ли это Java или C# -приложением? Если это Java, вы должны сделать:

result = mqMessage.ReadString(mqMessage.getMessageLength()); 
Смежные вопросы