zoukankan      html  css  js  c++  java
  • RabbitMQ安装配置和基于EasyNetQ驱动的基础使用

    RabbitMQ基本概念和原理

    1.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

    2.RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写。

    3.Channel 

      Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。

    4.Exchange(生产者将消息发送到Exchange(交换器),由Exchange将消息路由到一个或多个Queue中(或者丢弃),RabbitMQ常用的Exchange Type有fanout、direct、topic、headers这四种)

    5.Queue(RabbitMQ的内部对象,用于存储消息)

    6.基本工作原理

     客户端(生产者) send Message -->Exchange (交换机通过不同的类型将消息保存到对应的queue)-->Queue  

     客户端(消费者)通过订阅来消费queue中的消息。

     以上基础概念整理来源于 RabbitMQ基础概念详细介绍 

    在Windows系统中安装RabbitMQ

      1. 下载安装erlang (我用的是otp_win64_19.3版本)  

          下载地址 http://www.erlang.org/downloads(根据操作系统选择32还64位)  

      2. 下载安装rabbitmq-server(我用的是rabbitmq-server-3.6.10版本)

         下载地址 http://www.rabbitmq.com/install-windows.html

         安装好后,在看装目录下看到

        

         接下来用启用DOS命令

    a. cd 到sbin目录下,我的安装目录是D:RabbitMQServer abbitmq_server-3.6.10sbin, 输入D: 回车,cd  RabbitMQServer abbitmq_server-3.6.10sbin

     

    b. 查看安装是否成功命令 :rabbitmqctl status

    c.安装管理插件命令:rabbitmq-plugins enable rabbitmq_management

    安装成功,在浏览器中输入 http://127.0.0.1:15672/

     

    输入来宾账号 guest 密码 guest ,成功登陆进来,是不是有点小激动。

     guest 账号是管理员账号,可以添加Exchanges,Queues,Admin。但我们一般不使用guest账号,继续用命令来添加账号和权限。

    d:添加用户:rabbitmqctl.bat add_user username password

     

    e:添加“超级管理员”角色: rabbitmqctl.bat set_user_tags username administrator

     

    mymq账号也是超级管理员了,Can access virtual hosts :No access ,可以看到还没有能够访问的虚拟机,接下来添加虚拟机。

    f: 添加虚拟机:  rabbitmqctl add_vhost vhostName

     myvhost虚拟机并没有Users,接下来给虚拟机绑定账号。

    g:定虚拟机和用户权限:rabbitmqctl set_permissions -p 虚拟机名称 账户名 ".*" ".*" ".*"

     

    h:处于习惯我一般删除掉guest账号:rabbitmqctl.bat delete_user username

     好了,重新登陆管理页面,一切正常,接下来开始实战了。 

    EasyNetQ的基本使用

    项目中安装EasyNetQ

    EasyNetQ是依赖于RabbitMQ.Client的,所以会被一并安装到项目中。

    Publish发布消息

     

    Model有个Queue的特性,定义Queue名称和Exchange名称。然后直接用Publish方法把Msg通过Model指定的交换机推送到指定队列去。

    运行代码,看看MQ的管理页面。

     已经创建了Model指定的交换机TestQueue.Exchange, Type:topic , Features:D 。D:Durable 说明默认创建的交换机是持久化的。

     因为还没有订阅消息,所以在Queues中还看不到对应的队列。

     Subscribe订阅消息

      

     为什么要在订阅代码上套一个while(true)了? 是为了把控制台程序模拟成Windows服务,因为控制台程序运行一闪而过,没办法真正订阅到MQ的消息。

     实际开发中,一般用Topself来把控制台程序发布成Windows服务,后面有时间再写一篇关于Topself的学习博客。

     再重复刚才的Publish操作,测试下整个流程。

     

    自定义Topic

    这样消息会被发送到名称为Test.开头的所有Queue队列中。

    SendReceive

    通过send和receive可以将消息发送到指定队列。

    本文博客园地址:http://www.cnblogs.com/struggle999/p/6937530.html 

  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/struggle999/p/6937530.html
Copyright © 2011-2022 走看看