学习一种技术需要先了解它,而想要学好一种技术,需要更多的了解它的组成,原理和实现机制!
RabbitMQ安装介绍
RabbitMQ是由erlang语言开发的,所以必须先有安装erlang,类似java安装
RabbitMQ是C/S模式的,所以安装rabbitMQ服务器,默认端口5672
提供了Web管理界面(默认端口15672),直接通过安装插件的方式开启它
RabbitMQ的一些术语
- Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。
- Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host
- Producer: 消息生产者
- Consumer: 消息消费者
- Queue: 存储消息的队列容器
- Message: 消费者真正需要的消息数据
- Connection: 一个tcp连接,相对比较耗资源
- Channel: 一个管道连接,是tcp连接内的连接(broker),使用现有的TCP连接进行数据传输
- Exchange: 消息路由,生产者发送消息并不是直接发送到队列中的而是先到指定方式路由中,然后由路由根据路由key绑定的队列发送到指定队列中(某种算法求出对应的queue,如对消息取模)。
- Binding:对路由与队列容器的绑定关系
- Routing key: 路由键,主要用来寻找队列queue
- AMQP: 高级消息队列协议,RabbitMQ是基于此协议实现的
- Users: RabbitMQ服务是基于C/S模式,通常连接都需要认证,就是设置密码
一个最纯粹的消息生产者
ConnectionFactory factory = new ConnectionFactory();//创建连接工厂对象 factory.HostName = "localhost";//指定主机名 //factory.Port = 5672;//指定端口号 //factory.VirtualHost = "amqp://localhost:5672";//指定RabbitMQ服务器的虚拟主机 //factory.UserName = "";//指定连接用户名 //factory.Password = "";//指定连接用户密码 var conn = factory.CreateConnection();//创建连接 var channel = conn.CreateModel();//建立管道 channel.QueueDeclare("lind", false, false, false, null); channel.BasicPublish( exchange: "", routingKey: "lind", basicProperties: null, body: Encoding.UTF8.GetBytes("Hello Lind!"));
上面代码是一个主机为localhost的rabbitmq服务器的lind队列发送一条消息,内容为Hello Lind!
通过web管理可以看到内容
感谢各位对消息中间件的支持,下一讲我们将介绍如何去消费消息!