C# ActiveMQ使用demo

安装流程在上一篇

引入包

在nuget中下载安装Apache.NMS.ActiveMQ 如图 收发都要

 

引入

using Apache.NMS;
using Apache.NMS.ActiveMQ;

发信方

///对方接收成功后给我们返回的消息
private void OnConsumedMessageReceived(IMessage message)
        {
            // 获取消息属性,判断是否已消费
            if (message is ITextMessage)
            {
                //Console.WriteLine("Received reply message: " + message.Text);
            }
        }
//开始发送代码
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");

            // 创建连接
            using (IConnection connection = factory.CreateConnection())
            {
                // 开启连接
                connection.Start();

                // 创建会话
                using (ISession session = connection.CreateSession())
                {
                    // 创建目的地(队列或主题)发送
                    IDestination destination = session.GetQueue("testqueue");
                 
                    //创建目的地(队列或主题)返回
                    IDestination destination_result = session.GetQueue("test_result");
                    IMessageConsumer consumedConsumer_result = session.CreateConsumer(destination_result);
                    consumedConsumer_result.Listener += new MessageListener(OnConsumedMessageReceived);
                    // 创建生产者
                    using (IMessageProducer producer = session.CreateProducer(destination))
                    {
                        // 创建消息
                        ITextMessage message = session.CreateTextMessage("Hello, ActiveMQ!" + DateTime.Now.ToString());
                        
                        //与返回信息对应
                        message.NMSCorrelationID = "id_code_" + DateTime.Now.ToString();//预留信息
                        message.NMSReplyTo = destination_result;//返回列队
                        // 发送消息
                        producer.Send(message);
                    }
                }
                connection.Close();
            }

收信方

此处创建的是控制台程序demo 入图

internal class Program
    {

        public static void mq_load()
        {

            // 创建连接工厂
            IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");

            // 创建连接
            using (IConnection connection = factory.CreateConnection())
            {
                // 创建会话
                using (ISession session = connection.CreateSession())
                {
                    // 创建目的地
                    IDestination destination = session.GetQueue("testqueue");
                    // 创建消费者
                    IMessageConsumer consumer = session.CreateConsumer(destination);
                    // 设置消息监听器
                    consumer.Listener += new MessageListener(OnMessage);
                    
                    //需要返回消息才返回
                    if (message.NMSReplyTo != null)
                    {
                        // 创建返回消息
                        ITextMessage returnMessage = session.CreateTextMessage("需要返回通知已经收到了");
                        // 设置返回消息的相关属性
                        returnMessage.NMSCorrelationID = message.NMSCorrelationID;
                        returnMessage.NMSReplyTo = message.NMSReplyTo;
                        // 创建消息生产者
                        using (IMessageProducer producer = session.CreateProducer(message.NMSReplyTo))
                        {
                            // 发送返回消息
                            producer.Send(returnMessage);
                        }
                    }
                    
                    // 启动连接
                    connection.Start();
                    // 等待消息
                    Console.ReadLine();
                }
            }

        }

        static void OnMessage(IMessage message)
        {
            if (message is ITextMessage textMessage)
            {
                // 处理消息
                Console.WriteLine("Received message: " + textMessage.Text);
            }
        }

        static void Main(string[] args)
        {
            mq_load();
        }
    }

 

posted @ 2023-04-06 11:14  阿飞飞阿飞  阅读(162)  评论(0编辑  收藏  举报