前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java与RabbitMQ(六)RabbitMQ几个重要的概念、术语详解

Java与RabbitMQ(六)RabbitMQ几个重要的概念、术语详解

作者头像
青山师
发布2023-05-04 20:10:33
1410
发布2023-05-04 20:10:33
举报

本节内容主要详细介绍RabbitMQ中几个重要的概念以及术语。

RabbitMQ 简单介绍

RabbitMQ是流行的开源消息队列系统,用Erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。这里我们介绍RabbitMQ中主要涉及的几个重要概念,理解后希望在实际使用中会加深理解。

消息队列服务器

可以为 客户端程序提供消息队列、路由选择和 目录服务。消息队列服务器可以用于:

  • 为独立客户提供消息 路由选择和会话集中。
  • 在通过 路由链接的站点之间提供消息路由选择。
  • 创建队列并存储用于从属客户的消息。

RabbitMQ 消息模型

RabbitMQ消息发送时,生产者是不知道消息是否发送到某个队列中去了,生产者仅仅只能将消息发送给某个交换器。

Broker

RabbbitMQ消息队列代理服务器实体。

Producer

发送消息的应用程序。

Consumer

接收消息的用户程序。

Exchange

交换器,生产者直接将消息发送给交换器。交换器将消息分发给指定的队列。它指定消息按什么规则,路由到哪个队列。

Binding

绑定,指的是交换器和队列之间的关系。它的作用就是把exchange和queue按照路由规则绑定起来。

Routing Key

路由关键字,exchange根据这个关键字进行消息投递。

vhost

虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。

Channel

消息通道,包含了大量的API可用于编程。在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

Connection

在客户创建一个到某个虚拟主机的连接。

ConnectionFactory

连接工厂类。可以创建一个连接。

使用注意事项

消息队列的使用过程大概如下:

  • 客户端连接到消息队列服务器,打开一个channel。
  • 客户端声明一个exchange,并设置相关属性。  
  • 客户端声明一个queue,并设置相关属性。
  • 客户端使用routing key,在exchange和queue之间建立好绑定关系。
  • 客户端投递消息到exchange。exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

exchange也有几个类型,完全根据key进行投递的叫做Direct交换机,例如,绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列。对key进行模式匹配后进行投递的叫做Topic交换机,符号”#”匹配一个或多个词,符号”*”匹配正好一个词。例如”abc.#”匹配|abc.def.ghi”,”abc.*”只匹配”abc.def”。 还有一种不需要key的,叫做Fanout交换机,它采取广播模式,一个消息进来时,投递到与该交换机绑定的所有队列。

RabbitMQ支持消息的持久化,也就是数据写在磁盘上,为了数据安全考虑,我想大多数用户都会选择持久化。消息队列持久化包括3个部分:

  • exchange持久化,在声明时指定durable 为 1
  • queue持久化,在声明时指定durable 为 1
  • 消息持久化,在投递时指定delivery_mode 为 2(1是非持久化)

如果exchange和queue都是持久化的,那么它们之间的binding也是持久化的。如果exchange和queue两者之间有一个持久化,一个非持久化,就不允许建立绑定。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RabbitMQ 简单介绍
    • 消息队列服务器
      • RabbitMQ 消息模型
        • Broker
          • Producer
            • Consumer
              • Exchange
                • Binding
                  • Routing Key
                    • vhost
                      • Channel
                        • Connection
                          • ConnectionFactory
                          • 使用注意事项
                          相关产品与服务
                          消息队列
                          腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档