Windows平台安装与使用RabbitMQ

来源:互联网 发布:构造函数 java 编辑:程序博客网 时间:2024/05/27 14:14
    1. 首先需要下载Erlang, RabbitMQ基于Erlang语言开发:
        
          这里下载19.3 Windows 64-bit的:
        
          运行安装即可:
         
    2. 下载RabbitMQ windows平台版本:
     
      安装(安装时会提示是否elr.exe访问私有网络,点击允许即可)
     
      启动RabbitMQ后,它将以服务的方式运行:
         
       默认情况下,对RabbitMQ的Web管理页面是没有开启的,需要手动开启:
      
       开启后,默认端口为15672,默认用户为guest,其密码为:guest,注意,该用户只能在localhost域名下访问,外网是无法访问的,需要添加用户并分配角色,登陆后页面如下:
     
    3. 上面安装完后,现在使用C#语言来测试使用以下。在.NET平台,需要先安装.Net Rabbit客户端:
     这里下载3.6.10版本的,面对.Net4.5版本的:
  
       添加环境变量:
    
    4. 创建消费者测试项目并添加引用:
    
     添加对RabbitMQ.Client.dll的引用。编辑cs文件如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using RabbitMQ.Client;using RabbitMQ.Client.Events;namespace TestRabbitMQConsumer{    class Program    {        static void Main(string[] args)        {            var conn_factory = new ConnectionFactory();            conn_factory.HostName = "localhost";            conn_factory.UserName = "guest";            conn_factory.Password = "guest";            IConnection conn = conn_factory.CreateConnection();            IModel channel = conn.CreateModel(); // 创建信道            channel.ExchangeDeclare("jim-exchange", ExchangeType.Direct, true, false, null);            channel.QueueDeclare("jim-queue", false, false, false, null);            channel.QueueBind("jim-queue", "jim-exchange", "jim");            QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); // 订阅消费者            String consumer_tag = channel.BasicConsume("jim-queue", false, consumer); // 开始消费            while (true) { // 处理发来的消息                BasicDeliverEventArgs event_args = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); //消息为空则停止执行并等待消息到来                IBasicProperties msg_props = event_args.BasicProperties;                String msg_body = Encoding.ASCII.GetString(event_args.Body);                channel.BasicAck(event_args.DeliveryTag, false);                if (msg_body == "quit")                {                    channel.BasicCancel(consumer_tag);                    break;                }                else                {                    Console.WriteLine($"Receive Message Body: {msg_body}");                }            }            Environment.Exit(0);        }    }}

     运行该消息消费者,因为还没有消息,因此,空白:
   
     在Web管理后台我们可以看到一些相关信息:
  
     5. 创建了消息消费者后,现在来实现消息生产者,创建新项目,对RabbitMQ.Client.dll引用同第4步配置,修改cs文件代码如下:
       
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using RabbitMQ.Client;using RabbitMQ.Client.Events;namespace TestRabbitMQProducer{    class Program    {        static void Main(string[] args)        {            var conn_factory = new ConnectionFactory();            conn_factory.HostName = "localhost";            conn_factory.UserName = "guest";            conn_factory.Password = "guest";            IConnection conn = conn_factory.CreateConnection();            IModel channel = conn.CreateModel();            channel.ExchangeDeclare("jim-exchange", ExchangeType.Direct, true, false, null);            String msg_body = "I am producer.";            IBasicProperties msg_props = channel.CreateBasicProperties();            msg_props.ContentType = "text/plain";            channel.BasicPublish("jim-exchange", "jim", msg_props, Encoding.ASCII.GetBytes(msg_body));            Environment.Exit(0);        }    }}

       生产者让交换器"jim-exchange",以键"jim"投递了消息,这样,在消费者端,就会按预定配置,获取消息体msg_body,消息体需要字节数组,因此这里使用Encoding.ASCII.GetBytes()来进行转换。
       现在来启动消息生产者,并看看消费者是否能收到消息:
     
 可以看到,消息传递成功了。我们也可以使用Web端来发送一个消息"haha",也能投递成功:
        这里基于 .Net 平台实现消息生产和消费,同样,很方便可以移植到Java或python等其他平台上,实现系统异构化。
原创粉丝点击