文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一.其他知识点
1.1 幂等性
1.2 优先级队列
场景: 向用户发送短信提醒,根据用户订单规模优先推送.
优先级范围:0-255;越大优先级越高(业界一般允许0-10)
队列中添加优先级范围
Map<String, Object> params = new HashMap();
params.put("x-max-priority", 10); // 设置优先级范围0-10
channel.queueDeclare("hello", true, false, false, params);
消息中添加优先级
AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().priority(5).build();
注意要让生产者批量发消息给MQ,这才有机会去排序.
1.3 惰性队列
场景:
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-queue-mode", "lazy");
channel.queueDeclare("myqueue", false, false, false, args);
二.镜像队列
为了解决:交换机不可复用问题.交换机宕机造成队列消失. 即便是进行过持久化操作,但仍无法避免由于缓存导致的问题:因为消息在发送之后和被写入磁盘井执行刷盘动作之间存在一个短暂却会产生问题的时间窗。
类似于redis主从集群,保证消息不丢失.
三.实现负载高可用
在java中写死了消息队列ip.当该ip挂掉我们就再也无法发送消息.这时需要nginx实现负载均衡.我们只需连接nginx,由nginx实现代理转发.
四.联邦交换机(Federation Exchange)
场景:保证跨地域消息队列数据一致性.降低延迟问题.
docker安装rabbitMQ插件过程
每台机器都要安装
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
五.联邦队列(Federation Queue)
六.Shovel
docker安装rabbitMQ插件过程
每台机器安装
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management