C#でVのRabbitMQエンドアプリケーション - メッセージング

オリジナル: C#のV端子のRabbitMQでのアプリケーション-メッセージング

著作権:彼の同意を得ずに、この記事を再現してはならない、あなたに感謝https://blog.csdn.net/phocus1/article/details/87361905

1.VS2013プロデューサーエンドを作成します

コンソールプログラムを作成する:WIRabbitMQProducer、.NETフレームワークおよび4.6.2に変更(バージョン4.6であることができます)。

次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。

class Program
    {
        static void Main(string[] args)
        {
            IConnection conn = null;
            IModel channel = null;
            try
            {
                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };

                using (conn = factory.CreateConnection())
                {
                    using (channel = conn.CreateModel())
                    {
                        string queueName = "mqQueueName1";//队列名称
                        channel.QueueDeclare(queueName, false, false, false, null);//定义队列
                        string message = "消息内容201902191355";//消息内容
                        var properties = channel.CreateBasicProperties();
                        properties.DeliveryMode = 2;//持久化
                        for (int i = 0; i < 1900000; i++)
                        {
                            string strSendMsg = string.Format("{0}_{1}", message, i);
                            var body = Encoding.UTF8.GetBytes(strSendMsg);
                            channel.BasicPublish("", queueName, properties, body);//推送
                            Console.WriteLine("已生产:{0}", strSendMsg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("异常", ex.ToString());
            }
            finally
            {//关闭
                conn.Close();
                channel.Close();
            }
        }
    }

業績:

消費者側が作成2.VS2013

コンソールプログラムを作成します。WIRabbitMQConsumerを、と.NET Framework 4.6.2を変更します。

次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。

public void SubscribeMQ()
        {
            IConnection conn = null;
            IModel channel = null;
            int runIndex = 1;
            try
            {
                Console.Write("------启动RabbitMQ监听-------\n\t");
                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };

                using (conn = factory.CreateConnection())
                {
                    using (channel = conn.CreateModel())
                    {
                        #region 消息响应
                        string queueName = "mqQueueName1";
                        var consumer = new QueueingBasicConsumer(channel);
                        channel.BasicConsume(queueName, false, consumer);
                        while (true)
                        {
                            var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
                            var body = ea.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("已接收:{0},{1}", message, runIndex);
                            runIndex++;
                            channel.BasicAck(ea.DeliveryTag, false);
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }

業績:

消費は、多くの倍を達成し、処理効率をコミットしながら、複数の消費者の側を実行することができます:

 

オリジナル: C#のV端子のRabbitMQでのアプリケーション-メッセージング

著作権:彼の同意を得ずに、この記事を再現してはならない、あなたに感謝https://blog.csdn.net/phocus1/article/details/87361905

1.VS2013プロデューサーエンドを作成します

コンソールプログラムを作成する:WIRabbitMQProducer、.NETフレームワークおよび4.6.2に変更(バージョン4.6であることができます)。

次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。

class Program
    {
        static void Main(string[] args)
        {
            IConnection conn = null;
            IModel channel = null;
            try
            {
                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };

                using (conn = factory.CreateConnection())
                {
                    using (channel = conn.CreateModel())
                    {
                        string queueName = "mqQueueName1";//队列名称
                        channel.QueueDeclare(queueName, false, false, false, null);//定义队列
                        string message = "消息内容201902191355";//消息内容
                        var properties = channel.CreateBasicProperties();
                        properties.DeliveryMode = 2;//持久化
                        for (int i = 0; i < 1900000; i++)
                        {
                            string strSendMsg = string.Format("{0}_{1}", message, i);
                            var body = Encoding.UTF8.GetBytes(strSendMsg);
                            channel.BasicPublish("", queueName, properties, body);//推送
                            Console.WriteLine("已生产:{0}", strSendMsg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("异常", ex.ToString());
            }
            finally
            {//关闭
                conn.Close();
                channel.Close();
            }
        }
    }

業績:

消費者側が作成2.VS2013

コンソールプログラムを作成します。WIRabbitMQConsumerを、と.NET Framework 4.6.2を変更します。

次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。

public void SubscribeMQ()
        {
            IConnection conn = null;
            IModel channel = null;
            int runIndex = 1;
            try
            {
                Console.Write("------启动RabbitMQ监听-------\n\t");
                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };

                using (conn = factory.CreateConnection())
                {
                    using (channel = conn.CreateModel())
                    {
                        #region 消息响应
                        string queueName = "mqQueueName1";
                        var consumer = new QueueingBasicConsumer(channel);
                        channel.BasicConsume(queueName, false, consumer);
                        while (true)
                        {
                            var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
                            var body = ea.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("已接收:{0},{1}", message, runIndex);
                            runIndex++;
                            channel.BasicAck(ea.DeliveryTag, false);
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }

業績:

消費は、多くの倍を達成し、処理効率をコミットしながら、複数の消費者の側を実行することができます:

 

おすすめ

転載: www.cnblogs.com/owenzh/p/11087948.html