1、介绍AMQP协议服务器
特性:
1:分布式事务支持。
2:消息的持久化支持。
3:高性能和高可靠的消息处理优点。app
分发策略:
1: 轮询分发
2: 公平分发分布式
AMQP消息路由必须的三部分:交换器、路由、绑定
性能
消费者从队列中接收消息:spa
注意:日志
对个消费者共用同一队列 ,消息的消费流程循环消费,cosumerA,cosumerB。server
一、 messageA 到达队列先 给conusumerA ,在consumerA中确认了接收了messageA消息,RabbiMQ将messageA从队列中删除
二、message发送给consumerB ranhou....
问题一:consumerA没有确认消息会怎么样?rabbitmq
messageA会发送给下一个消费者,从而保证消息被消费,若是consumerA没有确认消息,队列将不会发送消息给消费者A,能够利用这点来控制消费时长。
问题二:使用什么方式拒绝处理该条消息?队列
一、把消费者从rabbiMq断开(会增长对RabbitMQ的负荷) 二、RabbitMq2.0.0及以上版本可使用AMQP的basic.reject命令。把reject命令的requeue 值设为true则将消息发送到下一个message,false则是移除该消息。
名词介绍:图片
2、交换器和绑定
交换器经过路由键来分发消息到不一样队列:一共有4中类型交换器 direct、famous、topic、headers(headers交换器容许你匹配Amqp消息的header而非路由键)
服务器必须实现direct类型交换器,包含一个空白字符串的默认交换器。队列的名称就是路由键
3.topic交换器:经过通配符匹配消息,使得不一样源头的消息到达同一队列
3、虚拟主机
每个vhost本质上是一个mini版的RabbitMq服务器,拥有本身的队列、交换器和绑定。挡在Rabbitmq集群中建立了一个mq则整个集群中都会建立这个vhost。
四、消息持久化和策略
五、使用Rabbitmq的大体流程
RabbitMq是运行在Erlang上的
一、启动结点 ./sbin/rabbitmq -server
二、关闭结点 ./sbin/rabbitmqctl stop 只关闭rabbitmq ./rabbitmqctl stop_app
三、Rabbitmq日志:LOG_BASE = /var/log/rabbitmq
会建立两个日志文件RABBITMQ_NODENAME-sasl.log 和RABBITMQ_NODENAME.log
文章参考书籍:《Rabbimq实战 高效部署分布式消息队列》