.NET Core下使用ActiveMq消息队列示例

2019-07-29  本文已影响0人  DF_Sky

下载 安装 启动 我就不说了 大家自行百度解决
官方网站下载地址:http://activemq.apache.org/

消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。主要用作不同进程、应用间的通信方式

直接上教程

首先我们创建一个.net core控制台程序 方便测试 我当前用的core版本是2.2
(ASP.net core使用同理)

然后安装下这个库


image.png

接着我们写简单示例

 static void Main(string[] args)
        {
//消费者
            Task.Run(() =>
            {
                string queuesName = "myQueue";
                Uri _uri = new Uri(String.Concat("activemq:failover:(tcp://localhost:61616)"));
                IConnectionFactory factory = new ConnectionFactory(_uri);
                using (IConnection conn = factory.CreateConnection())
                {
                    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);
                            };
                            Console.ReadLine();
                        }
                    }
                }
            });
//生产者
            Task.Run(() =>
            {
                string _queuesName = "myQueue";
                var __uri = new Uri(string.Concat("activemq:failover:(tcp://localhost:61616)"));
                IConnectionFactory _factory = new ConnectionFactory(__uri);
                using (IConnection _conn = _factory.CreateConnection())
                {
                    using (ISession _session = _conn.CreateSession())
                    {
                        IDestination _destination = SessionUtil.GetDestination(_session, _queuesName);
                        using (IMessageProducer producer = _session.CreateProducer(_destination))
                        {
                            //可以写入字符串,也可以是一个xml字符串等
                            for (int i = 0; i < 10; i++)
                            {
                                ITextMessage request = _session.CreateTextMessage("新新messsage" + i);
                                producer.Send(request);
                                Console.WriteLine("发送新新消息:" + i);
                                Thread.Sleep(200);

                            }

                        }
                    }
                }

            });

            Console.ReadLine();
        }

效果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读