RabbitMQ实战

来源:互联网 发布:虚拟机优化显卡性能 编辑:程序博客网 时间:2024/06/07 08:48

启动服务器

 - sbin/rabbitmq-server

检测服务器状态

 - sbin/rabbitctl status

AMQP消息路由包含三部分:

 - 交换器Exchange、队列Queue、绑定Binding。

生产者发布的消息最终如何到队列上面:

 - 生产者先把消息发布到Exchange上面,然后Binding决定了消息如何路由到特定的队列上面

消费者通过两种方式从特定的队列中接收消息

 - basic.consume,这种做法会将信道设置为接收模式,直到取消订阅位置, 当消费者确认或者拒绝了接收到的消息之后, 就会继续等待下一条消息. 持续接收.

 - basic.get, 这种做法只能获取一条消息, 如果想再从获取的话, 需要重新发送basic.get , 实现高吞吐量的时候, 还是需要用basic.consume

 - RabbitMQ只有接收到消费者返回的Ack之后, 才会认为消费者顺利处理的消息, 才会继续发送下一条消息过去, 可以防止持续不断的消息发送给消费者, 从而导致消费者宕机.


处理消息遭遇不可预知错误的时候,两种解决方案

 - 把消费者从RabbitMQ服务器上面断开连接, RabbitMQ会自动把消息发送给下一个消费者处理, 但是有个缺点, 连接/断开连接会损耗大量的资源, 导致重大负荷.

 - 2.0以上的版本可以使用basic.reject拒绝消息, 如果把reject命令的requeue设置成true的话, RabbitMQ会重新发送消息给下一个订阅者, 但是如果false的话, 会把这条消息从队列上面移除.


创建队列

 - 生产者消费者都可以通过queue.declare, 参数exclusive可以指定队列为私有, 只有你才可以接收消息. auto-delete可以做到当最后一个消费者取消订阅的时候, 自动移除队列.













0 0
原创粉丝点击