1.Windows下安装RabbitMQ需要以下几个步骤

(1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将%ERLANG_HOME%\bin加入到Path中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;

(2):下载RabbitMQ,下载地址:http://www.rabbitmq.com/,同样双击.exe进行安装就好(这里需要注意一点,默认的安装目录是C:/Program Files/....,这个目录中是存在空格符的,我们需要改变安装目录,貌似RabbitMQ安装目录中是不允许有空格的,我之前踩过这个大坑);

(3):安装RabbitMQ-Plugins,这个相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录(我的目录是:E:\software\rabbitmq\rabbitmq_server-3.6.5\sbin),输入:rabbitmq-plugins enable rabbitmq_management命令,稍等会会发现出现plugins安装成功的提示,默认是安装6个插件,如果你在安装插件的过程中出现了下面的错误:

解决方法是:首先在命令行输入:rabbitmq-service stop,接着输入rabbitmq-service remove,再接着输入rabbitmq-service install,接着输入rabbitmq-service start,最后重新输入rabbitmq-plugins enable rabbitmq_management试试,我是这样解决的;

(4):插件安装完之后,在浏览器输入http://localhost:15672进行验证,你会看到下面界面,输入用户名:guest,密码:guest你就可以进入管理界面,当然用户名密码你都可以变的;

2.安装完RabbitMQ之后,我们先来简单了解下RabbitMQ中涉及到的几个概念

producer:消息生产者

consumer:消息消费者

virtual host:虚拟主机,在RabbitMQ中,用户只能在虚拟主机的层面上进行一些权限设置,比如我可以访问哪些队列,我可以处理哪些请求等等;

broker:消息转发者,也就是我们RabbitMQ服务端充当的功能了,那么消息是按照什么规则进行转发的呢?需要用到下面几个概念;

exchange:交换机,他是和producer直接进行打交道的,有点类似于路由器的功能,主要就是进行转发操作的呗,那么producer到底用哪个exchange进行路由呢?这个取决于routing key(路由键),每个消息都有这个键,我们也可以自己设定,其实就是一字符串;

queue:消息队列,用于存放消息,他接收exchange路由过来的消息,我们可以对队列内容进行持久化操作,那么queue到底接收那个exchange路由的消息呢?这个时候就要用到binding key(绑定键)了,绑定键会将队列和exchange进行绑定,至于绑定方式,RabbitMQ提供了多种方式,大家可以看看鸿洋大神的RabbitMQ博客系列(点击查看);

以上就是RabbitMQ涉及到的一些概念了,用一张图表示这些概念之间的关系就是:

3.RabbitMQ简单使用

producer(生产者)端步骤:

(1):创建ConnectionFactory,并且设置一些参数,比如hostname,portNumber等等

(2):利用ConnectionFactory创建一个Connection连接

(3):利用Connection创建一个Channel通道

(4):创建queue并且和Channel进行绑定

(5):创建消息,并且发送到队列中

注意,在我们当前的例子中,并没有用到exchange交换机,RabbitMQ默认情况下是会创建一个空字符串名字的exchange的,如果我们没有创建自己的exchange的话,默认就是使用的这个exchange;

producer端代码:

[java] view plain copy
  1. public class Sender {
  2. private final static String QUEUE_NAME = "MyQueue";
  3. public static void main(String[] args) {
  4. send();
  5. }
  6. public static void send()
  7. {
  8. ConnectionFactory factory = null;
  9. Connection connection = null;
  10. Channel channel = null;
  11. try {
  12. factory = new ConnectionFactory();
  13. factory.setHost("localhost");
  14. connection = factory.newConnection();
  15. channel = connection.createChannel();
  16. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  17. String message = "my first message .....";
  18. channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
  19. System.out.println("已经发送消息....."+message);
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. } catch (TimeoutException e) {
  23. e.printStackTrace();
  24. }finally{
  25. try {
  26. //关闭资源
  27. channel.close();
  28. connection.close();
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. } catch (TimeoutException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
  36. }

consumer(消费者)端步骤:

(1):创建ConnectionFactory,并且设置一些参数,比如hostname,portNumber等等

(2):利用ConnectionFactory创建一个Connection连接

(3):利用Connection创建一个Channel通道

(4):将queue和Channel进行绑定,注意这里的queue名字要和前面producer创建的queue一致

(5):创建消费者Consumer来接收消息,同时将消费者和queue进行绑定

consumer端代码:

[java] view plain copy
  1. public class Receiver {
  2. private final static String QUEUE_NAME = "MyQueue";
  3. public static void main(String[] args) {
  4. receive();
  5. }
  6. public static void receive()
  7. {
  8. ConnectionFactory factory = null;
  9. Connection connection = null;
  10. Channel channel = null;
  11. try {
  12. factory = new ConnectionFactory();
  13. factory.setHost("localhost");
  14. connection = factory.newConnection();
  15. channel = connection.createChannel();
  16. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  17. Consumer consumer = new DefaultConsumer(channel){
  18. @Override
  19. public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
  20. byte[] body) throws IOException {
  21. System.out.println("11111111111");
  22. String message = new String(body, "UTF-8");
  23. System.out.println("收到消息....."+message);
  24. }};
  25. channel.basicConsume(QUEUE_NAME, true,consumer);
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. } catch (TimeoutException e) {
  29. e.printStackTrace();
  30. }finally{
  31. try {
  32. //关闭资源
  33. channel.close();
  34. connection.close();
  35. } catch (IOException e) {
  36. e.printStackTrace();
  37. } catch (TimeoutException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }
  42. }

好了,这篇先到这了,下一篇我会简单介绍点更深入的东西,后续也会对RabbitMQ原生API进行封装,便于我们自己开发;

:Windows下RabbitMQ安装及入门相关推荐

  1. Windows下RabbitMQ安装及入门

    下载erlang:http://www.erlang.org/downloads RabbitMQ服务端使用并发式语言erlang编写 创建ERLANG_HOME环境变量 环境变量指向erlang的安 ...

  2. Windows下RabbitMQ安装及注意事项

    Windows下RabbitMQ安装及注意事项 简介 背景 1.      RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现. Rabbit ...

  3. windows下Graphviz安装及入门教程

    下载安装配置环境变量 intall 配置环境变量 验证 基本绘图入门 graph digraph 一个复杂的例子 和python交互 发现好的工具,如同发现新大陆.有时,我们会好奇,论文中.各种专业的 ...

  4. Windows下RabbitMQ安装,部署,配置

    安装部署 1.当前环境以及参考资料出处 部署环境:windows server 2008 r2 enterprise 官方安装部署文档:http://www.rabbitmq.com/install- ...

  5. windows 下 Graphviz 安装及入门教程以及 PlantUML

    From:http://m.blog.csdn.net/lanchunhui/article/details/49472949 开源工具---使用简单的文字描述画UML图之PlantUML官网:htt ...

  6. Windows下RabbitMQ安装及配置

    1.安装Erlang 1)下载地址:http://erlang.org/download/otp_win64_23.2.exe,本文选择OTP 23.2 Windows 64-bit Binary F ...

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

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

  8. windows下Graphviz安装及入门教程(附下载链接)

    首先可以在cmd命令行模式下使用 pip install graphviz pip install pydot pip install pydot_ng的方法来安装,如果安装后无法直接 或者在官网下载 ...

  9. Windows下RabbitMQ安装以及启动发生系统错误 1067。进程意外终止解决办法

    安装 RabbitMQ需要64版本的Erlang环境支持, 需要先安装Erlang语言,为了方便大家安装,已经上传对应匹配的包到百度网盘. PS:没有匹配搞死人,后面的排错方案就是采坑后查资料以及实践 ...

最新文章

  1. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
  2. 【DIY】一个名叫“故事鸡”的儿童玩具是如何用树莓派3B+练成的
  3. 六 运行级别调整增加启动项
  4. Nginx的http块MIME-Type的使用
  5. SAP Spartacus 4.0 版本因为 hamburger 依赖导致构建出错的问题
  6. python input函数无法输入字符串_Python手把手教程之用户输入input函数
  7. “变形金刚”为何强大:从模型到代码全面解析Google Tensor2Tensor系统
  8. Maven 项目在 Eclipse 的创建配置
  9. 记录学习WeakReference发现的问题
  10. 高斯过程回归GPR-MATLAB语法解释
  11. 模糊聚类划分matlab代码,模糊C均值聚类算法(原理+Matlab代码) - 全文
  12. 英语语法篇 - 非谓语动词
  13. LCA的 Trajan 算法
  14. 【GD32L233C-START】8、使用内部参考电压校准adc,adc采样更准确
  15. cgb2109-day02
  16. Altium Designer一些好用的系统设置
  17. 【LeetCode】1823. 找出游戏的获胜者 Find the Winner of the Circular Game
  18. java基础----数据类型
  19. Promise过程中穿插用户操作
  20. 七巧板复原算法之三——摆放算法

热门文章

  1. aliyun maven 添加jar_gradle添加阿里云maven库
  2. devserver配置_vue.config.js的配置
  3. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行
  4. ipv6 端口号_计算机网络之IP、MAC、端口号、子网掩码、默认网关、DNS
  5. php 7.2 兼容5.5吗,PHP5.5至PHP7.2 新特性整理
  6. 华为鸿蒙系统初探之HUAWEI DevEco Studio Hello World
  7. 笔记-高项案例题-2016年上-计算题
  8. 5 分钟掌握 Python 中常见的配置文件
  9. Delphi获取显卡和系统各种音频设备的代码实现
  10. Leaflet中通过setZIndex实现图层层级控制