首页 > 解决方案 > 显示来自 IBM MQ 的消息

问题描述

我创建了可以连接、发送或读取队列中的消息的应用程序。在这一刻,我想显示来自队列的消息(未读!)。你能帮我解决这个问题吗?当我尝试访问队列时,我应该使用 MQC.MQOO_BROWSE 参数吗?

我尝试了如下创建方法:

public ShowMessage ShowMessagesFromQueue(IRequiredParameters parameters)
{
    ShowMessage queue;
    try
    {
        queue = new ShowMessage(_manager.AccessQueue(parameters.QueueName, MQC.MQOO_INQUIRE | MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_BROWSE));
        Console.WriteLine("Message from queue: ");     
    }
    catch (MQException exp)
    {
        Console.WriteLine(exp.Message);
        throw;
    }
}

而且我不知道我应该如何在下面实现类:

public class ShowMessage
{
     private MQQueue _queue;
     public ShowMessage(MQQueue queue)
    {
        _queue = queue;
    }

public string Show()
{
    var message = new MQMessage();
    try
    {
        return message.ReadString(message.(dontKnowWhatUseHere);
    }
    catch (MQException exp)
    {
        Console.WriteLine(exp.Message);
        throw;
    }
}

这是个好主意吗?

标签: c#ibm-mq

解决方案


好的,我解决了。在我的 Show 方法中,我必须添加更多选项,如下所示:

public void Show()
{
    var message = new MQMessage();
    try
    {
        var getMessageOptions = new MQGetMessageOptions();
        getMessageOptions.Options = MQC.MQGMO_BROWSE_FIRST;
        _queue.Get(message, getMessageOptions);
        var msg = message.ReadString(message.MessageLength);
        Console.WriteLine("Preview of message: " + msg);
    }
    catch (MQException exp)
    {
        Console.WriteLine(exp.Message);
        throw;
    }
}

推荐阅读