Java操作队列
Java操作队列
常见的几种模式:
1 简单队列simple
模型:(p + 队列 + c)
P:生产者producer,将消息发送到队列
红色:消息队列
C:消费者consumer,从队列消费消息
生产真的速度一般大于消费者的速度(因为消费者需要和业务计算相结合)
创建maven工程
导入pomjar文件
步骤:
a:获取MQ链接的工具类
创建生产者类发送消息:
再回到web控制台可以看到刚才的操作:
C: 创建一个消费者类消费消息
用的是旧的版本的(3.4)队列API
用最新的队列API(基于事件的监听):
2 工作队列work queue
一个生产者对应多个消费者!
轮询分发(round ribon)
编写生产者类生产50条信息:
消费者1消费消息:
消费者2消费消息:
修改睡眠时间为1000ms.
结果会看到消费者1和2都一人一个消息,均分消费了这50条消息。
这个是Rabbitmq的轮询分发(round-robin)。
公平分发(fair dipatch)
关闭自动应答asc,改为手动
修改生产者代码:
修改消费者代码:
运行的结果会看到睡眠2000ms的消费者消费的消息明显少于睡眠1000ms的消费者
消息应答ack,和消息持久化durable
消息应答主要是防止消费者挂了之后丢失数据。
持久化durable:
消息的持久化主要是为了防止rabbitmq服务器挂了之后消息丢失。
3 订阅模式
模型
X:交换机,路由器。需要绑定到队列。
交换机
"":匿名转发。
Fanout:不处理路由键
代码用例
编写生产者:
运行之后可以在web控台看到多了一个exchange:
创建消费者类:
在web控制台可以见到:
4 Direct:处理路由键的模式
代码用例 生产者:
消费者1(单个路由key):
消费者2(多个路由key):
启动消费者1和2之后,再发送key为error的消息,消费者1和2都能消费该消息
5 Topics 模式
将路由键和某种主题模式匹配(采用通配符的方式)
#:匹配一个或者多个的情况(常用)
*:匹配一个。(少用)
代码用例:发布商品的增删改查
生产者:
消费者1:
消费者2:
最新文章
- php的面向对象
- 代码大全 MSIL语言程序设计
- 5. 星际争霸之php设计模式--抽象工厂模式
- <;转>;MySQL性能优化的最佳20+条经验
- iOS 并发概念浅析
- 例说C#深拷贝与浅拷贝
- UITextField align left margin
- Objective-C和Swift实现单例的几种方式
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
- 一个想法照进现实-《IT连》创业项目:一个转折一个反思
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
- luogu4705玩游戏
- 20175204 张湲祯 2018-2019-2《Java程序设计》第二周学习总结
- 论文笔记:ATOM: Accurate Tracking by Overlap Maximization
- Windows下 tensorboard出现ValueError:Invalid format string
- React-router4 第八篇 ReactCSSTransitionGroup 动画转换
- Wshshell 脚本简单学习
- android--------自定义控件 之 ViewGroup
- 2019-04-09-day028-OSI七层模型
- linux目录管理、时钟管理、文件查看命令