rabbitmq简单实例

rabbitmq简单实例

 

JMS组件:activemq(慢)
AMQP组件(advance message queue protocol):rabbitmq和kafka

一.、消息队列解决了什么问题?
异步处理
应用解耦
流量削锋
日志处理

二、rabbitmq安装与配置

三、java操作rabbitmq
1. simple 简单队列 
2. work queues 工作队列 公平分发 轮询分发
3. publish/subscribe 发布于订阅
4. routing 路由选择 通配符模式
5. topics 主题
6. 手动和自动确认消息
7. 队列的持久化和非持久化
8. rabbitmq的延迟队列

四、spring AMQP spring-rabbitmq

五、场景demo mq实现搜索引擎DIH增量

六、场景demo 未支付订单30分钟,取消

七、大数据应用 类似百度统计 cnzz架构 消息队列

 

一、简单队列

ConnectionUtils.java

 View Code

Send.java

 View Code

Receive.java

 View Code

 

二、工作队列

2.1 轮询分发

Send.java

 View Code

Receive1.java

 View Code

Receive2.java

 View Code

 

现象:消费者1和消费者2处理的消息是一样的

           消费者1偶数

           消费者1奇数

           这种方式叫做轮询分发(round-robin),结果就是不管谁忙活着谁清闲,都不会多给一个消息,任意消息总是你一个,我一个

 

2.2 公平分发(fair dipatch)

Send.java

 View Code

Receive1.java

 View Code

Receive2.java

 View Code

 现象:消费者2处理的消息比消费者1多,能者多劳

三、消息与应答ack与消息持久化durable

 boolean autoAck = false;

 channel.basicConsume(QUEUE_NAME, autoAck, consumer);

 

 boolean autoAck = true;(自动确认模式)一旦rabbitmq将消息分发给消费者,就会从内存中删除

 这种情况下,如果杀死正在执行的消费者,就会丢失正在处理的消息

 

 boolnea autoAck = false;(手动模式),如果有一个消费者挂掉,就会交付给其他消费者,

 rabbitmq支持消息应答,消费者发送一个应答,告诉rabbitmq这个消息我已经处理完成,你可以删除了,然后rabbitmq就删除

内存中的消息

 

消息应答模式是打开的,false

 

Message acknowkedgment

消息持久化

boolean durable = false
channel.queueDeclare(QUEUE_NAME, durable, false, false, null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值