RabbitMQ 2 理解消息通讯

交换器和绑定

      交换器类型:direct     fanout     topic

 direct很简单     如果路由键匹配的话     到对应的队列

fanout 交换器  会将受到的信息广播到绑定的队列上      将消息投递给所有在交换器上的队列

topic交换器      不同源头的信息到达同一个队列

 

 

 

虚拟主机和隔离:

       vhost虚拟消息服务器   虚拟主机

通过在各个实例间提供逻辑分离   为不同应用程序安全保密的运行数据

      是AMQP得概念得基础,你必须连接时进行指定 。

        vhost和权限控制非常独特,他们是唯一无法通过amqp协议创建的基元

  可以通过Rabbitmq安装路径下。/sbin/目录中的rabbitmqctl工具创建

一旦创建成功之后,就可以链接上去开始添加队列和交换器  通过vhost保障了队列和交换器得安全

 

     队列和交换器默认情况下无法幸免于服务器重启   durable属性默认false     true可以断电后不重新建立队列     但是设置为true还不够

     能从崩溃中恢复的消息为持久化消息 在消息发布之前,通过它的投递模式选项设置为2来将消息标记为持久化。还必须通过持久化的交换器到达持久化的队列中才行   

      因此消息崩溃必须:

                    投递模式选选项设置为2(持久) 

                      发送到持久化的容器

                      到达持久化的队列

 

    不是所有的消息都需要持久化  ,写入磁盘要比写入内存慢不止一点点    也会减少RabbitMQ服务器每秒可处理的消息总数。使用就持久化机制导致消息吞吐量降低10倍也有可能。持久化消息在集群下工作得并不好。

     什么情况下使用持久性/持久化消息呢?

                 首先你需要分析性能需求   你是否需要rabbitmq服务器每秒100000条消息呢  是就要确保消息投递

    消息持久化相关得一个概念是amop事务   由于发布操作不返回信息 怎末知道服务器是否已经持久化消息到硬盘了呢?服务器可能在消息写入硬盘前就宕机了,消息因此丢失,你却不知道,这就是事务发挥作用得地方。

 

生产者得代码开始,需要完成以下任务:         消费者:

      连接到rabbitmq                                     连接到rabbitmq       

      获取信道                                                  获取信道

     声明交换器                                           声明交换器

     创建消息                                             声明队列

     发布消息                                               队列交换器绑定

     关闭信道                                            消费消息

     关闭连接                                              关闭信道    关闭连接

使用发送方确认方式确认投递

 

 

 

 

    

 

posted @ 2021-12-01 10:11  李文浩learning  阅读(43)  评论(0)    收藏  举报