在.NET下的使用ActiveMQ

本文通过示例代码展示了如何使用ActiveMQ进行消息发送与接收。包括创建连接、会话、消息生产者与消费者,并演示了如何监听并处理接收到的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目结构:

这里写图片描述

ActiveMQRecive下Program.cs

using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ActiveMQRecive
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                #region 消息消费者
                string queuesName = "myQueue";
                Uri _uri = new Uri(String.Concat("activemq:tcp://localhost:61616?wireFormat.maxInactivityDuration=0"));
                IConnectionFactory factory = new ConnectionFactory(_uri);
                // IConnectionFactory factory = new ConnectionFactory();
                using (IConnection conn = factory.CreateConnection("admin", "manager"))
                {
                    using (ISession session = conn.CreateSession())
                    {
                        conn.Start();
                        IDestination destination = SessionUtil.GetDestination(session, queuesName);
                        using (IMessageConsumer consumer = session.CreateConsumer(destination))
                        {
                            consumer.Listener += (IMessage message) =>
                            {
                                ITextMessage msg = (ITextMessage)message;
                                Console.WriteLine("接收消息:" + msg.Text);
                            };
                            // consumer.Listener += new MessageListener(consumer_Listener);
                            Console.ReadLine();
                        }
                    }
                }
                #endregion

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }


        static void consumer_Listener(IMessage message)
        {
            try
            {
                ITextMessage msg = (ITextMessage)message;
                Console.WriteLine("接收:" + msg.Text);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

ActiveMQSend下Program.cs

using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ActiveMQSend
{
    class Program
    {
        static void Main(string[] args)
        {
            string queuesName = "myQueue";
            Uri _uri = new Uri(String.Concat("activemq:tcp://localhost:61616"));
            IConnectionFactory factory = new ConnectionFactory(_uri);
            //IConnectionFactory factory = new ConnectionFactory();
            using (IConnection conn = factory.CreateConnection("admin", "manager"))
            {
                using (ISession session = conn.CreateSession())
                {
                    IDestination destination = SessionUtil.GetDestination(session, queuesName);
                    using (IMessageProducer producer = session.CreateProducer(destination))
                    {
                        conn.Start();
                        //可以写入字符串,也可以是一个xml字符串等
                        for (int i = 0; i < 100; i++)
                        {
                            ITextMessage request = session.CreateTextMessage("新新messsage" + i);
                            producer.Send(request);
                            Console.WriteLine("发送新新消息:" + i);
                            Thread.Sleep(1000);

                        }

                    }
                }
            }
        }
    }
}

运行结果如图:

这里写图片描述


这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值