이 글의 내용은 RabbitMQ를 소개하고 RabbitMQ에 관한 지식을 모두에게 알리기 위한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
RabbitMQ 개요
RabbitMQ
는 고성능 분산 메시징 미들웨어입니다. 이는 본질적으로 분산되어 있고 성능이 매우 뛰어난(하지만 시작하기 어려운) 언어인 RabbitMQ
是一个高性能的分布式消息中间件。它由Erlang编写,这种语言天生支持分布式,而且性能极高(但是比较难上手)。
通信概念
RabbitMQ简单理解就是一个队列服务,我们的生产者不断地往它投递消息,而消费者不断地从它那里获取消息。但相较于利用redis
的List这类简单队列,RabbitMQ的消息投递更灵活一点。首先需要知道一些RabbitMQ中的通信概念:
● exchange(交换器)
● queue(队列):消息队列载体,每个消息都会被投入到一个或多个队列。
● binding(绑定):它的作用就是把exchange和queue按照路由规则绑定起来。
● routing key(路由关键字):exchange根据这个关键字进行消息投递。
● vhost(虚拟主机):不同的vhost下,数据完全隔离,默认vhost为“/”
● channel(信道):在一个tcp连接下,可建立多个channel,每个channel代表一个会话任务。
● producer(生产者)
● consumer(消费者)
RabbitMQ中Exchange
类似于一个路由器,我们的consumer
并不会把消息直接投递给队列,而是投递给exchange
,exchange
根据我们投递时的路由键(routing key)再发送到特定的队列。这样的设计让消息可以灵活选路,发送到某一类的队列中,形成一对多的关系,而不仅仅是一对一。
Exchange
所以说RabbitMQ中的exchange
很方便,很强大,它有这样几种类型:
● direct
● fanout
● topic
● headers(几乎用不到)
direct
交换器很简单,有时候我们仅仅需要一个很简单的队列(消息投递到其中,然后不断消费它),这时候我们就可以用direct
交换器,它的规则是:如果路由键匹配,消息就会被投递到对应的队列。
fanout
交换器忽略路由键,把消息同时发到一批队列。
topic
Erlang
으로 작성되었습니다.
redis
를 사용하는 List와 같은 간단한 대기열에 비해 RabbitMQ의 메시지 전달은 더 유연합니다. 먼저 RabbitMQ의 몇 가지 통신 개념을 알아야 합니다. ● exchange(exchanger) 🎜🎜 ●queue(queue): 메시지 큐 캐리어, 각 메시지는 하나 이상의 큐에 배치됩니다. 🎜🎜● 바인딩: 라우팅 규칙에 따라 Exchange와 대기열을 바인딩하는 기능입니다. 🎜🎜 ● 라우팅 키: Exchange는 이 키워드를 기반으로 메시지를 전달합니다. 🎜🎜 ● vhost(가상 호스트): 다른 가상 호스트에서는 데이터가 완전히 격리됩니다. 기본 가상 호스트는 "/"🎜🎜 ● Channel(채널): TCP 연결에서 여러 채널을 설정할 수 있으며 각 채널은 세션을 나타냅니다. . 🎜🎜 ● 생산자 🎜🎜● 소비자 🎜🎜 RabbitMQ의 Exchange
는 라우터와 유사하며 consumer
는 메시지를 직접 전달하지 않습니다. 메시지를 대기열로 보내는 대신 exchange
로 전달됩니다. exchange
는 이를 전달할 때 라우팅 키를 기반으로 특정 대기열로 보냅니다. 이 디자인을 사용하면 메시지를 유연하게 라우팅하고 특정 유형의 대기열로 보낼 수 있어 일대일 관계가 아닌 일대다 관계를 형성할 수 있습니다. 🎜🎜🎜🎜Exchange🎜🎜🎜🎜그래서 RabbitMQ의 exchange
는 매우 편리하고 강력합니다. 🎜🎜 ● Direct🎜🎜● Fanout🎜🎜● Topic🎜🎜● 헤더(거의 없음) 사용됨) 🎜🎜direct
교환기는 매우 간단합니다. 때로는 매우 간단한 대기열(메시지가 전달된 다음 지속적으로 소비됨)이 필요한 경우 direct
를 사용할 수 있습니다. 교환기의 규칙은 라우팅 키가 일치하면 메시지가 해당 대기열로 전달된다는 것입니다. 🎜🎜🎜🎜fanout교환기는 라우팅 키를 무시하고 메시지를 🎜일괄 대기열에 동시에🎜 보냅니다. 🎜🎜🎜🎜topic은 다양한 라우팅 키를 기반으로 특정 유형의 대기열에 메시지를 보내는 것입니다. 🎜🎜🎜🎜🎜🎜 추천 관련 비디오 튜토리얼: "🎜PHP Tutorial🎜"🎜🎜위는 이 글의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! ! 🎜위 내용은 RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!