RabbitMQ简单使用

Posted tianfang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ简单使用相关的知识,希望对你有一定的参考价值。

环境搭建:

RabitMQ是用Elang编写的,虽然Elang本身是跨平台的,但也同时意味着搭建Rabit环境需要首先配置Elang环境。配置RabitMQ的网上教程还比较多的:

在Linux下配置也是差不多的,可以参考这篇文档: RabbitMQ基础

总结下就是如下步骤:

  1. 安装Elng运行环境
  2. 安装Elang
  3. 安装RabbitMQ
  4. 配置环境变量
  5. 启动RabbitMQServer,并配置为服务
  6. 配置可视化插件
  7. 创建用户,设置密码、分配角色
  8. 设置用户VirtualHost访问权限

配置完成后,可以从Web控制台访问: http://192.168.241.128:15672/

Docker方式环境搭建

Docker环境下安装就比较简单了,安装带部署一条命令直接到位:

  docker run -d --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

默认用户名和密码是guest/guest。如果要设置用户名和权限,可以通过环境变量的方式设置:

  docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

更多的设置可以参考网上文章:使用Docker部署RabbitMQ集群

安装客户端库:

    Install-Package RabbitMQ.Client

创建Connection和Channel

首先还是看看RabbitMQ的模型图:

  技术分享图片

一个会话是一个channel,所有操作都是基于channel进行的。

    var factory = new ConnectionFactory
    {
    
    UserName = "guest"Password = "guest"VirtualHost = "/"HostName = "192.168.241.128"
    };
    
    var conn    = factory.CreateConnection();
    var channel = conn.CreateModel();

创建Exchange、Queue和Bind

    channel.ExchangeDeclare("exchange1"ExchangeType.Direct);
    channel.QueueDeclare("queue1"falsefalsefalsenull);
    channel.QueueBind("queue1""exchange1""route1"null);

发布消息

消息是发布到exchange上,并且需要指定路由。

    var message = DateTime.Now.ToString();
    byte[] data = Encoding.UTF8.GetBytes(message);
    channel.BasicPublish("exchange1""route1"null, data);

接收消息

接收消息只需要指定queue即可。

    var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
        var body    = ea.Body;
        var message = Encoding.UTF8.GetString(body);
        Console.WriteLine($" [x] Received {message}");
    };
    channel.BasicConsume(queue: "queue1", autoAck: true, consumer: consumer);

接收消息主要是通过BasicConsume函数进行,它需要指定一个消费者IBasicConsumer,这里我用的是基于事件的EventingBasicConsumer,系统默认还有许多其它的实现,这里就不一一举例了。

业务模型

我这里只是简单的演示了API的使用,具体的各业务模型可以参考官方的文档。

 

以上是关于RabbitMQ简单使用的主要内容,如果未能解决你的问题,请参考以下文章

rabbitmq演示代码

CentOS7下安装RabbitMQ,并使用Spring Boot实现一个简单的延迟队列(小白教程,附源码)

简单介绍下怎么在spring中使用RabbitMQ

创建自己的代码片段(CodeSnippet)

为啥这段代码会泄露? (简单的代码片段)

rabbitmq简单收发服务搭建