RabbitMQ集群
摘要:RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKe
阅读全文
posted @
2020-05-30 15:21
溪水静幽
阅读(182)
推荐(0) 编辑
priority queue
摘要:生产者 public void prioritySms() throws InterruptedException { byte[] body = "hello world".getBytes(); for (int i = 0; i < 10; i++) { int priority = new
阅读全文
posted @
2020-01-18 19:06
溪水静幽
阅读(145)
推荐(0) 编辑
异步RPC调用
摘要:Server:提供服务的服务,RPC模型中的Server Client: 调用服务的服务,RPC模型中的client 监听了sms队列,这个队列将会是客户端请求消息发送到的队列,配置了适配器,适配器中去调用服务,适配器返回的值就是服务端返回给客户端的RPC调用的结果 @RabbitListener(
阅读全文
posted @
2020-01-14 23:08
溪水静幽
阅读(1621)
推荐(0) 编辑
Queue Length Limit
摘要:Max length(x-max-length) 用来控制队列中消息的数量。 如果超出数量,则先到达的消息将会被删除掉。 Max length bytes(x-max-length-bytes) 用来控制队列中消息总的大小。 如果超过总大小,则最先到达的消息将会被删除,直到总大小不超过x-max-l
阅读全文
posted @
2020-01-12 19:11
溪水静幽
阅读(188)
推荐(0) 编辑
延迟队列
摘要:延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。 场景: 延迟消费。比如: 用户生成订单之后,需要过一段时间校验订单的支付状态,如果订单仍未支付则需要及时地关闭订单。 用户注册成功之后,需要过一段时间比如一周后校验用户的使用情况,如果发现用户活跃
阅读全文
posted @
2020-01-12 18:09
溪水静幽
阅读(434)
推荐(0) 编辑
消息发送确认 与 消息接收确认
摘要:消息发送确认 发送的消息怎么样才算失败或成功?如何确认? 当消息无法路由到队列时,确认消息路由失败。消息成功路由时,当需要发送的队列都发送成功后,进行确认消息,对于持久化队列意味着写入磁盘,对于镜像队列意味着所有镜像接收成功 ConfirmCallback 通过实现 ConfirmCallback
阅读全文
posted @
2020-01-05 22:30
溪水静幽
阅读(582)
推荐(0) 编辑
@RabbitListener 与 @RabbitHandler 及 消息序列化
摘要:使用 @RabbitListener 注解标记方法,当监听到队列 debug 中有消息时则会进行接收并处理 使用 @Payload 和 @Headers 注解可以消息中的 body 与 headers 信息 @RabbitListener(queues = "debug") public void
阅读全文
posted @
2020-01-05 21:47
溪水静幽
阅读(3756)
推荐(0) 编辑
MessageListenerAdapter
摘要:消息监听适配器:具体消息的消费逻辑,适配成 MessageListenerAdapter 定义的格式 默认的方法签名为:void handleMessage(byte[] messageBody) /** * 自定义的消费监听 */ public class MessageDelegate { /*
阅读全文
posted @
2020-01-05 20:52
溪水静幽
阅读(2001)
推荐(1) 编辑
SimpleMessageListenerContainer
摘要:同一个queue上有多个消费者的时候,只会有一个消费者收到消息,一般是多个消费者轮流收到消息。SimpleMessageListenerContainer可以监听多个队列,监听单个或多个队列、自动启动、自动声明功能,container.setQueueNames的api接收的是一个字符串数组对象。
阅读全文
posted @
2020-01-05 17:21
溪水静幽
阅读(4486)
推荐(0) 编辑
死信队列
摘要:“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。 延迟队列场景: 订单业务:在电商中,用户下单后30分钟后未付款则取消订单。 短信通知:用户下单并付款后,1分钟后发短信给用户。 Time To Live(TTL)
阅读全文
posted @
2020-01-01 23:21
溪水静幽
阅读(358)
推荐(0) 编辑
API(一)
摘要:依赖 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.5.0</version> </dependency> 消费者 @Slf4j public class Me
阅读全文
posted @
2020-01-01 19:25
溪水静幽
阅读(118)
推荐(0) 编辑
spring boot整合rabbitmq
摘要:消费者 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 配置文件 spring.rabbitmq.a
阅读全文
posted @
2020-01-01 14:03
溪水静幽
阅读(100)
推荐(0) 编辑
概念与原理
摘要:订单系统中,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期,这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,
阅读全文
posted @
2020-01-01 10:43
溪水静幽
阅读(170)
推荐(0) 编辑