一、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\rabbitmq_server-3.6.10\sbin, 输入D: 回车,cd  RabbitMQServer\rabbitmq_server-3.6.10\sbin

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的基本使用

a.项目中安装EasyNetQ

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

b.  PublishSubscribe

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队列中。

c.  SendReceive

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

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

RabbitMQ安装配置和基于EasyNetQ驱动的基础使用的更多相关文章

  1. centos7 rabbitmq安装/配置

    原文:centos7 rabbitmq安装/配置     因为RabbitMQ是由erlang实现的,所以要先安装erlang再安装rabbitMQ   1.先配置yum软件源地址EPEL(EPEL是 ...

  2. RabbitMQ安装配置

    安装RabbitMQ windows下的安装是非常简单的,我们需要准备两个东西 erlang的环境  下载windows和与之对象的操作系统位数安装包 http://www.erlang.org/do ...

  3. Windows 64位 RabbitMQ 安装配置

    1:下载Erlang,地址:http://www.erlang.org/download/otp_win64_19.0.exe ,双击安装即可(首先装) 2:下载RabbitMQ,RabbitMQ 3 ...

  4. 阿里云服务器下安装配置 vsftpd —— 基于CentOS 6.3 【简洁版】

    原文链接:http://www.tuicool.com/articles/nuiQBja 1.更新yum源 我是直接 yum update 更新的 2.安装vsftp 使用yum命令安装vsftpd ...

  5. .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...

  6. CentOS7下RabbitMQ服务安装配置

    参考文档: CentOS7下RabbitMQ服务安装配置 http://www.linuxidc.com/Linux/2016-03/129557.htm 在linux下安装配置rabbitMQ详细教 ...

  7. RabbitMQ学习在windows下安装配置

    RabbitMQ学习一. 在windows下安装配置 1.下载并安装erlang,http://www.erlang.org/download.html,最新版是R15B01(5.9.1).由于我机器 ...

  8. RabbitMQ_安装配置与管理

    RabbitMQ 安装配置与管理 安装 安装erlang虚拟机 Rabbitmq基于erlang语言开发,所有需要安装erlang虚拟机 #wget  http://www.erlang.org/do ...

  9. windows 下rabbitmq 安装---转载

    原文地址:http://blog.sina.com.cn/s/blog_7cc0c8cc0101mb4a.html 1.下载并安装erlang,http://www.erlang.org/downlo ...

随机推荐

  1. USACO Section 1.1-3 Friday the Thirteenth

    Friday the Thirteenth 黑色星期五 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数. 给出N年的一个 ...

  2. BeautifulSoup库children(),descendants()方法的使用

    BeautifulSoup库children(),descendants()方法的使用 示例网站:http://www.pythonscraping.com/pages/page3.html 网站内容 ...

  3. Java 中字两个字符串判断是否相等(转载)

    java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...

  4. css伪类的组合用法

    利用伪类组合,可以用css代替js以达到目的,少些一下js .textarea:empty:before { display: block; content: '请输入'; color: #ababa ...

  5. iOS 2017年, 上传审核被拒绝.到奔溃

    2017年,苹果并没有因为新年的气氛而对CP们"网开一面".频繁锁榜.调整排名规则以及关键词覆盖算法--不断抛出的大动作,让CP们叫苦不迭.且从1月初开始,苹果还进一步加强了对应用 ...

  6. 详解 Node + Redux + MongoDB 实现 Todolist

    前言 为什么要使用 Redux? 组件化的开发思想解放了繁琐低效的 DOM 操作,以 React 来说,一切皆为状态,通过状态可以控制视图的变化,然后随着应用项目的规模的不断扩大和应用功能的不断丰富, ...

  7. angular二级联动菜单

    <!doctype html> <html lang="en" ng-app='App'> <head> <meta charset=&q ...

  8. python基本数据类型——int

    一.int的范围 python2: 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1: 在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1: pyth ...

  9. C语言学习第九章

    学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的 ...

  10. 解析View的getDrawingCache方法

    1. View 的getDrawingCache方法 有时候需要将某个view的内容以图片的方式保存下来,感觉就和截图差不多,可以使用View 的getDrawingCache方法,返回一个Bitma ...