RabbitMQ 安装及配置

RabbitMQ

RabbitMQ 安装及配置_第1张图片

RabbitMQ简介

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:

RabbitMQ安装

1、首先安装erlang
下载地址:http://www.erlang.org/downloads/20.3
RabbitMQ 安装及配置_第2张图片

安装完成后配置环境变量
RabbitMQ 安装及配置_第3张图片

安装完成检查
RabbitMQ 安装及配置_第4张图片

2、RabbitMAQ安装
下载地址:http://www.rabbitmq.com/install-windows.html
RabbitMQ 安装及配置_第5张图片

安装完成后设置登录账户完成后重启服务

RabbitMQ 安装及配置_第6张图片

3、RabbitMQ常用命令

开启浏览器访问http://localhost:15672

默认userName:guest    password:guest

创建用户

rabbitmqctl.bat add_user leimiaotang 123456

授权角色

(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他的

进入到sbin目录下执行命令

rabbitmq-server stop

rabbitmq-server start

生产者

class Program
{
static void Main(string[] args)
{
DirectExchangeSendMsg();
}

    /// 
    /// 连接配置
    /// 
    private static readonly ConnectionFactory rabbitMqFactory = new ConnectionFactory()
    {
        HostName = "192.168.1.28",
        UserName = "admin",
        Password = "admin"
    };
    /// 
    /// 路由名称
    /// 
    const string ExchangeName = "justin.exchange";

    //队列名称
    const string QueueName = "justin.queue";
    public static void DirectExchangeSendMsg()
    {
        using (IConnection conn = rabbitMqFactory.CreateConnection())
        {
            using (IModel channel = conn.CreateModel())
            {
                channel.ExchangeDeclare(ExchangeName, "direct", durable: true, autoDelete: false, arguments: null);
                channel.QueueDeclare(QueueName, durable: true, autoDelete: false, exclusive: false, arguments: null);
                channel.QueueBind(QueueName, ExchangeName, routingKey: QueueName);

                var props = channel.CreateBasicProperties();
                props.Persistent = true;
                string vadata = Console.ReadLine();
                while (vadata != "exit")
                {
                    var msgBody = Encoding.UTF8.GetBytes(vadata);
                    channel.BasicPublish(exchange: ExchangeName, routingKey: QueueName, basicProperties: props, body: msgBody);
                    Console.WriteLine(string.Format("***发送时间:{0},发送完成,输入exit退出消息发送", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                    vadata = Console.ReadLine();
                }
            }
        }
    }
}

消费者

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

    /// 
    /// 连接配置
    /// 
    private static readonly ConnectionFactory rabbitMqFactory = new ConnectionFactory()
    {
        HostName = "192.168.1.28",
        UserName = "admin",
        Password = "admin"
    };
    /// 
    /// 路由名称
    /// 
    const string ExchangeName = "justin.exchange";

    //队列名称
    const string QueueName = "justin.queue";
    public static void DirectAcceptExchangeEvent()
    {
        using (IConnection conn = rabbitMqFactory.CreateConnection())
        {
            using (IModel channel = conn.CreateModel())
            {
                channel.QueueDeclare(QueueName, durable: true, autoDelete: false, exclusive: false, arguments: null);
                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {

                    var msgBody = Encoding.UTF8.GetString(ea.Body);
                    Console.WriteLine(string.Format("***接收时间:{0},消息内容:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), msgBody));

                    //CreateDB,EntCode  CreateDB,1234567890ABCDEF
                    string[] oper=msgBody.Split(',');

                    if (oper[0].Equals("CreateDB"))
                    {
                        CreateDB createDB = new CreateDB();
                        createDB.CreateEntDB(oper[1], @"C:/Project/src/Code/CSTFinance/Ent.sql");
                    }
                };
                channel.BasicConsume(QueueName,  true, consumer: consumer);

                Console.WriteLine("按任意值,退出程序");
                Console.ReadKey();
            }
        }
    }
}

你可能感兴趣的:(rabbitmq)