美文网首页rabbitmq
RabbitMQ的基本用法到高级特性的使用

RabbitMQ的基本用法到高级特性的使用

作者: 像牛嗷嗷 | 来源:发表于2018-01-19 10:50 被阅读189次

    简介

    继上一篇 CentOS上安装RabbitMQ讲述RabbitMQ具体安装后,这一篇讲述RabbitMQ在C#的使用,这里将从基本用法到高级特性的使用讲述。

    前序条件

    这里需要增加一个用户,并且设置用户为administrator,更多命令可以参考[RabbitMQ更多命令],这里开始我本来是想用guest用户,端口是:15672,但是在创建连接的时候是连接不上的,查资料后发现是必须开放5672端口,并且不能使用guest默认用户(http://www.rabbitmq.com/rabbitmqctl.8.html)

    rabbitmqctl add_user allen pwd   //增加用户
    rabbitmqctl set_user_tags allen administrator  //设置用户权限
    rabbitmqctl change_password allen newpass  //修改密码
    

    开启5672端口

    firewall-cmd --zone=public --add-port=15672/tcp --permanent
    firewall-cmd --reload
    

    基本用法

    连接之前可以看到,rabbitmq的UI界面是没有连接的
    send发布者的代码

        /// <summary>
        /// 发送消息
        /// </summary>
        public class Send
        {
            private static readonly string appID = ConfigurationManager.AppSettings["AppID"];
    
            static void Main(string[] args)
            {
                var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] };
                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        string queue = string.Format("MQ{0}.BaseStudy", appID);
    
                        channel.QueueDeclare(queue, false, false, false, null);   //定义一个队列
    
                        while (true)
                        {
                            Console.Write("请输入要发送的消息:");
                            var message = Console.ReadLine();
                            var body = Encoding.UTF8.GetBytes(message);
    
                            channel.BasicPublish("", queue, null, body); //发送消息
    
                            Console.WriteLine("已发送的消息: {0}", message);
                        }
                    }
                }            
            }
        }
    

    RabbitMQUri,和AppID

    <add key="AppID" value="150107"/>    <!--队列ID-->  
    <add key="RabbitMQUri" value="amqp://test_user:123456@111.231.204.119:5672/" /> <!--连接字符串-->
    

    RabbitMQUri的Value相当于:

     <add key="RabbitMQ_HostName" value="111.231.204.119"/>
      <add key="RabbitMQ_UserName" value="test_user"/>
      <add key="RabbitMQ_Password" value="123456"/>
      <add key="RabbitMQ_Port" value="5672"/>
      <add key="RabbitMQ_VirtualHost" value="/"/>
    

    未建立连接时:



    建立连接后:



    发送消息

    可以看到RabbitMQ的UI管理界面的消息有:



    receive消费者收到的消息:

    receive的代码:
    /// <summary>
        /// 接收消息
        /// </summary>
        public class Receive
        {
            private static readonly string appID = ConfigurationManager.AppSettings["AppID"];
    
            static void Main(string[] args)
            {
                var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] };
                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        string queue = string.Format("MQ{0}.BaseStudy", appID);
    
                        channel.QueueDeclare(queue, false, false, false, null);   //定义一个队列
    
                        Console.WriteLine("准备接收消息:");                    
    
                        var consumer = new EventingBasicConsumer(channel);
                        consumer.Received += (s, e) =>
                        {
                            var body = e.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("接收到的消息: {0}", message);
                        };
                        channel.BasicConsume(queue, true, consumer);  //开启消费者与通道、队列关联
    
                        Console.ReadLine();
                    }
                }            
            }
    

    最后,附上源码地址,包括RabbitMQ的基本用法,发布订阅,高级特性DEMO

    相关文章

      网友评论

        本文标题:RabbitMQ的基本用法到高级特性的使用

        本文链接:https://www.haomeiwen.com/subject/yxfooxtx.html