赞
踩
一个队列中,一条消息只能被一个消费者消费;
一个生产者,多个消费者,每个消费者获取到的消息唯一;
消息需要制定direct类型的exchange和RoutingKey, 将消息发送到routingkey全匹配的队列;
消息需要制定topic类型的exchange和RoutingKey, 将消息发送到routingkey模糊匹配的队列;
消息需要制定fanout类型的exchange, 消息发送到该交换机的所有队列中;
消息需要制定header类型的exchange,根据发送的消息内容中的headers属性进行匹配。
最简单的情况,非集群模式,节点挂了,消息就不能用了。业务可能瘫痪,只能等待。
默认的集群模式,某个节点挂了,该节点上的消息不能用,有影响的业务瘫痪,只能等待节点恢复重启可用(必须持久化消息情况下)。
把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案;
为什么设置镜像模式集群,因为队列的内容仅仅存在某一个节点上面,不会存在所有节点上面,所有节点仅仅存放消息结构和元数据。
如果想解决上面途中问题,保证消息不丢失,需要采用HA 镜像模式队列。
下面介绍下三种HA策略模式:
1)同步至所有的;
2)同步最多N个机器;
3)只同步至符合指定名称的nodes。
缺陷:所有的读写都是在master上进行,从节点只是备份,最终会路由到master进行处理。
这样就解决了,即使一个消费者出了问题,没有同步消息给服务端,还有其他的消费端去消费,保证了消息不丢。
降低生产速度:往往跟业务相关。
提高消费速度:批量操作,减少重复查询,SQL优化。
支持并发消费:设置多个并发消费者或者增加服务节点。
拆分任务队列:大任务,拆分几个小任务并发消费。
收到消息后并未立即把消息投递到目标队列,而是存储在一个mnesia(分布式数据库中)中,随后检查消息延迟时间,到达可投递时间,将其通过x-delayed-type类型标记的交换机投递到目标队列。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。