rabbitmq1

http://www.rabbitmq.com/getstarted.html
rabbitMQ是遵循AMQP协议实现的消息服务,核心概念
producer -  消息生产者
exchange - rabbitMQ服务端的信箱,负责接受从producer发送来的消息
queue - 消息队列,同样在rabbitMQ服务端。exchange会把消息分发给queue。consumer从queue中取消息
consumer - 消费者,从queue里面读取消息

exchange类型:
fanout - 把exchange接受到的message分发到所有bind到这个exchange的queue
direct - queue在绑定到这个exchange的时候会指定binding-key。exchange在接受message的时候,message可以指定自己的routing-key。exhcange会比较message的routing-key和queue的binding-key, 进而把不同的message分发到不同的queue当中。
topic - 貌似支持类正则表达式,高阶??
header - ??

常用的类型也就fanout和direct了,很简单的!


消息服务比较在意的问题无外乎以下几点,

消息会不会丢?
在实现consumer的时候,可以指定其绑定的queue需要手工进行message acknowlegment(message ack)。如果queue没有接受到consumer发回的message ack, 它便不会删除message,直到consumer发送回来message ack,这就表明consumer已经处理完本条消息了。而且这个没有超时机制,只有当consumer的连接断掉之后,queue才会进行重发。message ack机制可以保证消息不会丢。

如果rabbitMQ Server down掉了怎么办?
同样,在实现consumer的时候也可以指定queue和message都是durable的。这样当断电或死机的时候,queue和message同样不会丢。因为server已经帮你把他们本地化了。

猜你喜欢

转载自chenhaiyang.iteye.com/blog/1767546