C# C语言中的消息驱动bean#

C# C语言中的消息驱动bean#,c#,ibm-mq,C#,Ibm Mq,有谁能建议我编写代码,在C#.net中编写一个消息驱动bean来监听MQ并处理相同的消息。MDB将使用Java。我不知道是否有应用服务器可以处理用C#编写的MDB 如果您的想法是使用C#应用程序异步接收WebSphere MQ消息,那么您可以使用具有消息侦听器的应用程序。XMS与JMS非常相似。这是一个“hello,world”的示例,它使用XMS实现了C#中的消息侦听器。请包括websphere mq安装中的参考IBM.XMS.dll 在我的32位windows安装中,它是 c:\Progra

有谁能建议我编写代码,在C#.net中编写一个消息驱动bean来监听MQ并处理相同的消息。

MDB将使用Java。我不知道是否有应用服务器可以处理用C#编写的MDB


如果您的想法是使用C#应用程序异步接收WebSphere MQ消息,那么您可以使用具有消息侦听器的应用程序。

XMS与JMS非常相似。这是一个“hello,world”的示例,它使用XMS实现了C#中的消息侦听器。请包括websphere mq安装中的参考IBM.XMS.dll

在我的32位windows安装中,它是

c:\Program Files\IBM\WebSphere MQ\bin\IBM.XMS.dll
本示例假设一些硬编码设置,并且没有错误处理,但我认为您已经了解了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IBM.XMS;

namespace XMSTest
{
    class MyXmsApp
    {
        static void Main(string[] args)
        {
            MyXmsApp app = new MyXmsApp();
            app.Setup();
            Console.ReadLine();
        }

        public void Setup()
        {
            XMSFactoryFactory xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
            IConnectionFactory cf = xff.CreateConnectionFactory();
            cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "localhost");
            cf.SetIntProperty(XMSC.WMQ_PORT, 1414);
            cf.SetStringProperty(XMSC.WMQ_CHANNEL, "CLIENT");
            cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
            cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QM_LOCAL");
            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("queue://q");
            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);
        }
    }
}

谢谢佩特,这真的很有帮助,但我有点困惑,它会阅读那些已经排在队列中等待响应的消息吗?我真的不明白。它将读取所有消息。如果有一条消息设置了回复队列,并且您知道您需要以某种方式进行回复,那么必须在“OnMessage”中手动处理,因此您必须创建一条消息,将消息id复制到相关id并发送出去。这应该相当直截了当