淮安住房和城乡建设厅网站,佛山市官网网站建设公司,公司网站可以个人备案吗,帝国和wordpress前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 在官网的教程中#xff0c;描述了如上六类工作队列模式#xff1a;
简单队列模式#xff1a;最简…前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 在官网的教程中描述了如上六类工作队列模式
简单队列模式最简单的工作队列其中一个消息生产者一个消息消费者一个队列。也称为点对点模式工作模式一个消息生产者一个交换器一个消息队列多个消费者。同样也称为点对点模式发布/订阅模式无选择接收消息一个消息生产者一个交换器多个消息队列多个消费者。称为发布/订阅模式路由模式在发布/订阅模式的基础上有选择的接收消息也就是通过 routing 路由进行匹配条件是否满足接收消息。主题模式同样是在发布/订阅模式的基础上根据主题匹配进行筛选是否接收消息比第四类更灵活。RPC模式与上面其他5种所不同之处类模式是拥有请求/回复的。也就是有响应的上面5种都没有。 接下来几篇文章一起来看看这几种队列模式吧本篇为简单队列模式。 文章目录 文章目录前言文章目录1 实现功能2 构建项目2.1 导入依赖2.2 封装Connection3 生产者4 消费者5 测试环节5.1 启动RabbitMQ5.2 创建vhost5.3 依次运行Producer\Customer6 简单队列总结1 实现功能
功能描述一个生产者 P 发送消息到队列 Q一个消费者 C 接收 P 表示为生产者 、C 表示为消费者红色表示队列。
2 构建项目
创建一个简单的maven项目 rabbitmq 父工程 – common 存放公用工具类 – customer 消费者 – producer生产者 2.1 导入依赖
在 rabbitmq 父工程 pom.xml 导入 maven 依赖
dependenciesdependencygroupIdcom.rabbitmq/groupIdartifactIdamqp-client/artifactIdversion3.6.5/version/dependency
/dependencies2.2 封装Connection
common模块中封装 rabbitmq 连接类
public class MQConnectionUtils {public static Connection newConnection() throws IOException, TimeoutException {/** 1.定义连接工厂 */ConnectionFactory factory new ConnectionFactory();/** 2.设置服务器地址 */factory.setHost(127.0.0.1);/** 3.设置协议端口号 */factory.setPort(5672);/** 4.设置vhost */factory.setVirtualHost(test001_host);/** 5.设置用户名称 */factory.setUsername(guest);/** 6.设置用户密码 */factory.setPassword(guest);/** 7.创建新的连接 */Connection newConnection factory.newConnection();return newConnection;}}3 生产者
生产者负责创建消息队列并发送消息入列简单分为5步
获取连接创建通道创建队列声明发送消息关闭队列
public class Producer {/** 队列名称 */private static final String QUEUE_NAME test_queue;public static void main(String[] args) throws IOException, TimeoutException {/** 1.获取连接 */Connection newConnection MQConnectionUtils.newConnection();/** 2.创建通道 */Channel channel newConnection.createChannel();/** 3.创建队列声明 */channel.queueDeclare(QUEUE_NAME, false, false, false, null);String msg 我是生产者生成的消息;System.out.println(生产者发送消息: msg);/** 4.发送消息 */channel.basicPublish(, QUEUE_NAME, null, msg.getBytes());channel.close();newConnection.close();}
}4 消费者
消费者实现和生产者实现过程差不多但是没有关闭连接和通道是因为要消费者一直等待随时可能发来的消息大致分为如下3步
获取连接获取通道监听队列
public class Customer {/** 队列名称 */private static final String QUEUE_NAME test_queue;public static void main(String[] args) throws IOException, TimeoutException {System.out.println(002);/** 1.获取连接 */Connection newConnection MQConnectionUtils.newConnection();/** 2.获取通道 */Channel channel newConnection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);DefaultConsumer defaultConsumer new DefaultConsumer(channel) {Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)throws IOException {String msgString new String(body, UTF-8);System.out.println(消费者获取消息: msgString);}};/** 3.监听队列 */channel.basicConsume(QUEUE_NAME, true, defaultConsumer);}}5 测试环节
至此整个项目代码写完了接下来就是测试环节
5.1 启动RabbitMQ 5.2 创建vhost 5.3 依次运行Producer\Customer
Producer生产者启动
Rabbit管理平台三条消息
Customer消费者启动
6 简单队列总结
简单队列也称为点对点即一个生产者对应一个消费者生产者发送消息到队列消费者在队列中取出消息消费。
生产者大致步骤
获取连接创建通道创建队列声明发送消息关闭队列
消费者大致步骤
获取连接获取通道监听队列消费消息 简单队列虽然简单但是有一些不足比如这种点对点无疑在复杂情况下会产生大量冗余代码继续看下一篇工作队列吧。 案例代码https://www.lanzous.com/i5ydu6d 我创建了一个java相关的公众号用来记录自己的学习之路感兴趣的小伙伴可以关注一下微信公众号哈niceyoo