簡體   English   中英

C#中的WebSphere MQ偵聽器

[英]WebSphere MQ listener in C#

我需要用C#編寫基於Windows的服務,以偵聽WebSphere MQ中配置的請求隊列。 我成功地將請求放入MQ並獲得了關聯ID,但是作為響應,我沒有得到實際結果。

我想開發一個系統,每當有新消息到達隊列時,服務都應提取消息並處理請求。 我可以使用我的相關ID映射該響應。

以下代碼解決了我的問題。

class Program
{
    static void Main(string[] args)
    {
        Program app = new Program();
        app.Setup();
        Console.ReadLine();

    }

    public void Setup()
    {
        XMSFactoryFactory xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
        IConnectionFactory cf = xff.CreateConnectionFactory();
        cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "10.87.188.156(7111)");
        cf.SetIntProperty(XMSC.WMQ_PORT, 7111);
        cf.SetStringProperty(XMSC.WMQ_CHANNEL, "QMEIGS1.CRM.SVRCONN");
        cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
        cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QMEIGS1");
        cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V1);

        IConnection conn = cf.CreateConnection();
        Console.WriteLine("connection created");
        ISession sess = conn.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
        IDestination dest = sess.CreateQueue("DOX.APYMT.ESB.SSK.RPO.02");
        IMessageConsumer consumer = sess.CreateConsumer(dest);
        MessageListener ml = new MessageListener(OnMessage);
        consumer.MessageListener = ml;
        conn.Start();
        Console.WriteLine("Consumer started");


    }

    private void OnMessage(IMessage msg)
    {
        ITextMessage textMsg = (ITextMessage)msg;
        Console.Write("Got a message: ");
        Console.WriteLine(textMsg.Text);
    }

}

我正在連接到Z / OS大型機上的MQ。 Rashmi的代碼示例幫了我大忙,但我需要按如下所示更改“ OnMessage”方法以提取消息:

    private void OnMessage(IMessage msg)
    {
        IBytesMessage bytesMessage = (IBytesMessage)msg;

        var buffer = new byte[bytesMessage.BodyLength];
        bytesMessage.ReadBytes(buffer, (int)bytesMessage.BodyLength);
        var messageAsText = Encoding.Unicode.GetString(buffer);

        Console.Write("Got a message: ");
        Console.WriteLine(messageAsText);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM