入门案例

简单队列模式的模型图:

官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色:

  • publisher:消息发布者,将消息发送到队列queue

  • queue:消息队列,负责接受并缓存消息

  • consumer:订阅队列,处理队列中的消息

publisher实现

思路:

  • 建立连接

  • 创建Channel

  • 声明队列

  • 发送消息

  • 关闭连接和channel

代码实现:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Test;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class PublisherTest {@Testpublic void testSendMessage() throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("rabbitmq");factory.setPassword("rabbitmq");// 1.2.建立连接Connection connection = factory.newConnection();// 2.创建通道ChannelChannel channel = connection.createChannel();// 3.创建队列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.发送消息String message = "hello, rabbitmq!";channel.basicPublish("", queueName, null, message.getBytes());System.out.println("发送消息成功:【" + message + "】");// 5.关闭通道和连接channel.close();connection.close();}
}

consumer实现

代码思路:

  • 建立连接

  • 创建Channel

  • 声明队列

  • 订阅消息

代码实现:

import java.io.IOException;
import java.util.concurrent.TimeoutException;public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("rabbitmq");factory.setPassword("rabbitmq");// 1.2.建立连接Connection connection = factory.newConnection();// 2.创建通道ChannelChannel channel = connection.createChannel();// 3.创建队列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.订阅消息channel.basicConsume(queueName, true, new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties, byte[] body) throws IOException {// 5.处理消息String message = new String(body);System.out.println("接收到消息:【" + message + "】");}});System.out.println("等待接收消息。。。。");}
}

总结

基本消息队列的消息发送流程:

  1. 建立connection

  2. 创建channel

  3. 利用channel声明队列

  4. 利用channel向队列发送消息

基本消息队列的消息接收流程:

  1. 建立connection

  2. 创建channel

  3. 利用channel声明队列

  4. 定义consumer的消费行为handleDelivery()

  5. 利用channel将消费者与队列绑定

RabbitMQ快速入门--简单队列模型相关推荐

  1. RabbitMQ(一):RabbitMQ快速入门

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括Rab ...

  2. Unity快速入门之四 - Unity模型动画相关

    最近要给公司的小伙伴做Unity入门,针对几个常用的知识进行快速入门介绍. Unity快速入门之一 3D基础概念.Camera.Canvas RenderMode的几种方式对比_翕翕堂 Unity快速 ...

  3. 【外行也能看懂的RabbitMQ系列(一)】—— RabbitMQ快速入门篇(内含丰富实例)

    系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...

  4. 第一讲 Matlab/Simulink入门——简单系统模型的Simulink仿真

    第一讲 Matlab/Simulink入门--简单系统模型的Simulink仿真 1.模型的数学表达式 2.建立系统模型 2.1.选择模块 2.2.参数设置 3.系统仿真 1.模型的数学表达式 y = ...

  5. MQ(二)RabbitMQ快速入门

    一.RabbitMQ 概述和安装 RabbitMQ 是基于 Erlang 语言开发的开源消息通信中间件 1. RabbitMQ的结构和概念 RabbitMQ中的几个概念: (1)channel:操作M ...

  6. Netty系列(2)快速入门Netty线程模型、Netty入门程序、Netty任务队列

    文章目录 1 Netty线程模型 1.1 传统阻塞 I/O 服务模型 1.2 Reactor线程模型 1.2.1 单 Reactor 单线程模型 1.2.2 单Reactor多线程 1.2.3 主从 ...

  7. RabbitMQ快速入门及实例演示

    RabbitMQ 先做起来,再去想其他. 1.MQ 消息队列概念 MQ(message queue)消息队列,FIFO先入先出.对服务器的请求先加入到消息队列中,再由消息队列来进行请求的分发. 还是一 ...

  8. RabbitMQ快速入门

    目录 1. 消息中间件概述 1.1. 什么是消息中间件 1.2. AMQP 和 JMS 1.2.1. AMQP 1.2.2. JMS 1.2.3. AMQP 与 JMS 区别 1.3. 消息队列产品 ...

  9. 【自动驾驶模拟器AirSim快速入门 | 03】模型训练

    这是机器未来的第20篇文章 写在前面: 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长! 专栏简介:掌握基本的自动驾驶概念.模型训练.推理仿真. 面向人群:零基础编程爱好者 专栏 ...

最新文章

  1. 聚合类新闻client初体验
  2. [云炬创业学笔记]第二章决定成为创业者测试5
  3. 多线程之线程池-各个参数的含义- 阿里,美团,京东面试题目
  4. 数据库系统原理(第6章:数据库安全与保护)
  5. word List 08
  6. 前端学习(86):标签嵌套规范
  7. Windows学习总结(5)——【IIS建站】Windows10怎么打开站点服务?
  8. Windows下配置Nginx使之支持PHP(转)
  9. [转帖]无法将临时对象绑定到非常量引用
  10. 捕捞季节 通达信副图指标公式 源码
  11. Arcgis空间校正操作
  12. (VCIP-2018)基于选择性卷积特征的广义均值池化细粒度图像检索
  13. 微信订阅号之政府认证
  14. 通过js实现页面布局
  15. 【回文数】求11到n之间(包括n),既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出 11到n之间的素数回文数个数。 样例输入 Copy 23 样例输出 Copy 1
  16. 什么叫数字化服务-数字化转型网
  17. 基于 FCCA 的多特征融合的检索方法
  18. jquery如何为元素设置style?
  19. 用python做PDF本地化压缩,新增多进程
  20. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响

热门文章

  1. Eclipse python 开发环境配置
  2. java程序员面试中的5个杀手锏问题
  3. bootstrap Table的使用方法
  4. Vim特定行行尾追加
  5. C# OOP 重要部分全解
  6. C#操作Excel的OLEDB方式与COM方式比较
  7. dm9000 driver 2
  8. Could not execute query against OLE DB provider 'OraOLEDB.Oracle'
  9. linux—用nc命令监控检测服务器端口
  10. 2018第一季度全球畅销手机排行出炉,苹果刷榜,小米三星各一款