简介
RabbitMQ是一个Message Broker,核心思想就是接受消息,转发消息。
实现的协议:AMQP。
术语(Jargon)
P,Producing,制造和发送信息的一方。
Queue,消息队列。
C,Consuming,接收消息的一方。

Simple Demo
发送方
    ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null); //(如果没有就)创建QueueString message = "Hello World!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());//以byte的方式发布System.out.println(" [x] Sent '" + message + "'");channel.close();connection.close();

接收方
    ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);//看一下Queue是否存在
 QueueingConsumer consumer = new QueueingConsumer(channel);channel.basicConsume(QUEUE_NAME, true, consumer);while (true) {QueueingConsumer.Delivery delivery = consumer.nextDelivery();//阻塞,直到接收到一条消息String message = new String(delivery.getBody());System.out.println(" [x] Received '" + message + "'");}


订阅/发布Demo
发送消息给多个订阅者
核心思想:消息发送给exchange,每个接收方创建匿名Queue绑定到exchange,exchange发送消息给每个接收方。
Exchanges
在RabbitMQ完整的模型中,消息只能发送给一个exchange。
exchange一方面接收消息,另一方面push给queues。
exchange类型
> rabbitmqctl list_exchanges
direct
topic
headers
fanout 广播消息给已知队列
发送方
String EXCHANGE_NAME = "logs";ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// 设置 exchange 类型
channel.exchangeDeclare(EXCHANGE_NAME /*exchange名称*/, "fanout"/*类型*/);
// 发布消息时,指定 exchange 名称
channel.basicPublish( EXCHANGE_NAME , "", null, message.getBytes());
channel.close();
connection.close();

接收方(可多个同时运行)
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// 设置exchange名称和类型
channel.exchangeDeclare(EXCHANGE_NAME, "fanout");
// 创建一个临时的、带有随机名称的Queue,用来与 exchange 绑定
String queueName = channel.queueDeclare().getQueue();
hannel.queueBind(queueName, EXCHANGE_NAME, ""); // 绑定
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, consumer);
while (true) {QueueingConsumer.Delivery delivery = consumer.nextDelivery();String message = new String(delivery.getBody());System.out.println(" [x] Received '" + message + "'");}


Install
@Windows
1 先安装Erlang。
2 官方网下载 .exe。

管理
命令行管理
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
WebUI管理
> rabbitmq-plugins enable rabbitmq_management
重启后访问 http://localhost:15672/
guest,guest
角色
management
policymaker
monitoring
administrator
添加用户并分配角色
> rabbitmqctl add_user name pass
> rabbitmqctl set_user_tags name administrator
插件管理
启用插件
> rabbitmq-plugins enable plugin-name
配置文件
etc\rabbitmq.config

Refs
1 入门 http://www.rabbitmq.com/getstarted.html

转载于:https://www.cnblogs.com/caca/p/rabbitmq_demo.html

RabbitMQ 入门相关推荐

  1. RabbitMQ 入门系列(10)— RabbitMQ 消息持久化、不丢失消息

    消息要保持"持久化",即不丢失,必须要使得消息.交换器.队列,必须全部 "持久化". 1. 生产者怎么确认 RabbitMQ 已经收到了消息? # 打开通道的确 ...

  2. rabbitMQ入门程序

    1.生产者 /*** rabbitMQ入门程序消费者** @author xiaoss* @date 2020年10月27日 22:02*/ public class Producer01 {//队列 ...

  3. rabbitmq 入门demo

    rabbitmq 入门demo http://www.cnblogs.com/jimmy-muyuan/p/5428715.html http://www.cnblogs.com/shanyou/p/ ...

  4. RabbitMQ 入门:2. Exchange 和 Queue

    上文RabbitMQ 入门:1. Message Broker(消息代理)提到过 RabbitMQ 实现了 AMQP 这个协议(RabbitMQ 所支持的 AMQP 的版本是 0.9.1),这个协议的 ...

  5. RabbitMQ入门学习系列(二),单生产者消费者

    友情提示 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题.可以直接在公众号<爱码农爱生活 >留言.必定会再次 ...

  6. RabbitMQ入门:路由(Routing)

    在上一篇博客<RabbitMQ入门:发布/订阅(Publish/Subscribe)>中,我们认识了fanout类型的exchange,它是一种通过广播方式发送消息的路由器,所有和exch ...

  7. RabbitMQ入门-Topic模式

    上篇<RabbitMQ入门-Routing直连模式>我们介绍了可以定向发送消息,并可以根据自定义规则派发消息.看起来,这个Routing模式已经算灵活的了,但是,这还不够,我们还有更加多样 ...

  8. RabbitMQ入门:发布/订阅(Publish/Subscribe)

    在前面的两篇博客中 RabbitMQ入门:Hello RabbitMQ 代码实例 RabbitMQ入门:工作队列(Work Queue) 遇到的实例都是一个消息只发送给一个消费者(工作者),他们的消息 ...

  9. RabbitMQ入门到精通

    RabbitMQ 1. 消息中间件概述 1.1. 为什么学习消息队列 电子商务应用中,经常需要对庞大的海量数据进行监控,随着网络技术和软件开发技术的不断提高,在实战开发中MQ的使用与日俱增,特别是Ra ...

  10. rabbitmq入门(四)Topics主题模式

    文章目录 Topics主题模式 代码实现 测试 总结 下一章 Topics主题模式 交换机类型为 topics - 将路由和某个模式匹配,# 匹配一个或者多个,* 匹配一个.例如交换机绑定的routi ...

最新文章

  1. linux 26,Linux常用26条命令
  2. EPSON机器人SPLE+语言_简单实例
  3. Windows下编译tensorflow-gpu教程
  4. Fiddler的介绍和配置
  5. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能
  6. 3个月亏17亿,贝壳释放了什么信号?
  7. 第十天 Oracle安装前准备工作
  8. C语言每日一题之No.12
  9. ajax异步下载文件并判断状态
  10. 尚观嵌入式c语言视频教程
  11. Multistage GAN for Fabric Defect Detection 用于织物检测的多级GAN
  12. Postman中文版 !!!!傻瓜教程
  13. 物联网与嵌入式系统的关系
  14. win7系统如何升级安装win11正式版,win7升级win11系统的方法
  15. 微信公众平台php开发包
  16. oracle rebuild online,alter index rebuild
  17. uniapp:使用百度API提取身份证信息(微信小程序适用)
  18. 一切就绪,2019年新型智慧城市峰会将展现怎样的“新益阳”
  19. 微信小程序开发之大转盘 抽奖
  20. 音频和视频的基础知识

热门文章

  1. Call apply 用法
  2. servlet文件上传blob_servlet实现从oracle数据库的blob字段中读出文件并显示 | 学步园...
  3. junction.exe 放在哪_情侣拥抱的5种姿势,可以看出感情深浅,你们属于哪一种?...
  4. C 语言编程 — 高级数据类型 — 数组
  5. 常见蓝牙模块介绍和AT指令
  6. 浅谈工程师的调试法宝(5) -JScope的应用_MCU
  7. JS面向对象一:MVC的面向对象封装
  8. leetcode题目解答报告(1)
  9. msf 之 webshell 提权
  10. sscanf用法(转)