• 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的使用,具体的各业务模型可以参考官方的文档。

  • 相关阅读:
    取消 Vue 中格式编译警告
    Vue 中提示报错 handlers[i].call is not a function解决方法
    PhpStorm 配置链接远程虚拟机
    Java 类提供了自定义的构造方法,那么类的默认构造不会被调用
    2019.9.30极限测试 04.JAVA语言课堂测试试卷-极限测试
    程序员修炼之道+从小工到专家 9月份读后感
    2019.9.23 作业2
    2019.9.23 作业1
    原码,补码,反码区分
    9.16日上课总结
  • 原文地址:https://www.cnblogs.com/TianFang/p/10135014.html
Copyright © 2020-2023  润新知