RabbitMQ快速入门--简单队列模型
入门案例
简单队列模式的模型图:
官方的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("等待接收消息。。。。");}
}
总结
基本消息队列的消息发送流程:
建立connection
创建channel
利用channel声明队列
利用channel向队列发送消息
基本消息队列的消息接收流程:
建立connection
创建channel
利用channel声明队列
定义consumer的消费行为handleDelivery()
利用channel将消费者与队列绑定
RabbitMQ快速入门--简单队列模型相关推荐
- RabbitMQ(一):RabbitMQ快速入门
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括Rab ...
- Unity快速入门之四 - Unity模型动画相关
最近要给公司的小伙伴做Unity入门,针对几个常用的知识进行快速入门介绍. Unity快速入门之一 3D基础概念.Camera.Canvas RenderMode的几种方式对比_翕翕堂 Unity快速 ...
- 【外行也能看懂的RabbitMQ系列(一)】—— RabbitMQ快速入门篇(内含丰富实例)
系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...
- 第一讲 Matlab/Simulink入门——简单系统模型的Simulink仿真
第一讲 Matlab/Simulink入门--简单系统模型的Simulink仿真 1.模型的数学表达式 2.建立系统模型 2.1.选择模块 2.2.参数设置 3.系统仿真 1.模型的数学表达式 y = ...
- MQ(二)RabbitMQ快速入门
一.RabbitMQ 概述和安装 RabbitMQ 是基于 Erlang 语言开发的开源消息通信中间件 1. RabbitMQ的结构和概念 RabbitMQ中的几个概念: (1)channel:操作M ...
- 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 主从 ...
- RabbitMQ快速入门及实例演示
RabbitMQ 先做起来,再去想其他. 1.MQ 消息队列概念 MQ(message queue)消息队列,FIFO先入先出.对服务器的请求先加入到消息队列中,再由消息队列来进行请求的分发. 还是一 ...
- RabbitMQ快速入门
目录 1. 消息中间件概述 1.1. 什么是消息中间件 1.2. AMQP 和 JMS 1.2.1. AMQP 1.2.2. JMS 1.2.3. AMQP 与 JMS 区别 1.3. 消息队列产品 ...
- 【自动驾驶模拟器AirSim快速入门 | 03】模型训练
这是机器未来的第20篇文章 写在前面: 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长! 专栏简介:掌握基本的自动驾驶概念.模型训练.推理仿真. 面向人群:零基础编程爱好者 专栏 ...
最新文章
- 聚合类新闻client初体验
- [云炬创业学笔记]第二章决定成为创业者测试5
- 多线程之线程池-各个参数的含义- 阿里,美团,京东面试题目
- 数据库系统原理(第6章:数据库安全与保护)
- word List 08
- 前端学习(86):标签嵌套规范
- Windows学习总结(5)——【IIS建站】Windows10怎么打开站点服务?
- Windows下配置Nginx使之支持PHP(转)
- [转帖]无法将临时对象绑定到非常量引用
- 捕捞季节 通达信副图指标公式 源码
- Arcgis空间校正操作
- (VCIP-2018)基于选择性卷积特征的广义均值池化细粒度图像检索
- 微信订阅号之政府认证
- 通过js实现页面布局
- 【回文数】求11到n之间(包括n),既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出 11到n之间的素数回文数个数。 样例输入 Copy 23 样例输出 Copy 1
- 什么叫数字化服务-数字化转型网
- 基于 FCCA 的多特征融合的检索方法
- jquery如何为元素设置style?
- 用python做PDF本地化压缩,新增多进程
- 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响