RabbitMQ随笔

            最近又重温了下关于RabbitMQ的相关知识点,感觉有些东西需要了解,并分享给大家,希望对你我都有帮助

1.队列协议中定义了4种不同类型的交换器,分别为headers,direct,fanouttopic,每种都实现了不同的路由算法。

 headers

        允许你匹配AMOP消息的headers而不是路由键,即routing-key(路由键为RabbitMQ决定将消息投递到哪个队列所遵循的规则)。 其实headers交换器和direct交换器是一致的,只是性能差距大。

 direct

       如果routing-key匹配的话,消息就会根据这个key被发送到相应的队列,是比较简单的一种交换器。direct为默认的交换器。

       当声明一个队列时,这个队列会自动绑到默认交换器上,并以队列名称作为路由键。

       channel.BasicPublish("", "default", properties, body);  参数一为默认的交换器类型,参数二为路由键,也就是队列名称。

 fanout

      fanout交换器是一种广播模式,当发送一条消息到fanout交换器时,这个交换器会把消息发送到所有绑定在此交换器上的队列。

 topic

      topic交换器可以将来自不同发送方的多条消息发送到同一个队列中。topic交换器的路由键必须是一些词的数组,用‘.’隔开,这些词的最大限度为255个字节。路由键有2种方式:

    1.“ * ” 代表任意一个词

    2.“ # ” 代表0个或者多个词

   RabbitMQ既可以以发布/订阅模式作为队列服务器使用,也可以作为RPC(远程过程调度)服务器。

2.RabbitMQ能够确保消息在服务器重启后恢复,它将消息持久化到磁盘上的一个日志文件中。(支持持久化)

3.RabbitMQ使用“发送方确认模式”来保证消息的传递。

   如果消息和队列是可持久化的,那么只会在队列将消息写在磁盘后才会发出消息确认。”发送方确认模式“的好处在于:异步。发布了消息,发送方(生产者)在等待确认消息的同时还可以继续发送消息,当收到确认消息,发送方的回调方法就会被触发来处理该确认消息。如果RabbitMQ内部发生了错误使得消息丢失,RabbitMQ会发送一条nack(未确认)消息来说明发布的消息已经丢失了。  RabbitMQ没有消息回滚这一说法,使“发送方确认模式”更轻量级。

4.RabbitMQ的事务是同步的,效率比较低(没有具体资料)

5.RabbitMQ是AMQP(高级消息队列)的标准实现。AMQP是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件。基于此协议的客户端和消息中间件传递消息,不用关注发送方/接收方,开发语言等。是一个异步消息传递所使用的应用层协议规范。

     AMQP协议是一种二进制协议,提供客户端应用与消息中间件之间异步,安全,高效的交互。

     消息中间件的主要功能:消息的路由和缓存。(Exchange和Message Queue)交互机和消息队列。

     合理使用消息队列可大幅度降低网络系统架构的耦合度和复杂度,让各集成部件拥有更灵活的自主弹性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值