>백엔드 개발 >PHP 튜토리얼 >RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개

RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개

青灯夜游
青灯夜游앞으로
2019-03-28 14:08:535400검색

이 글의 내용은 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并不会把消息直接投递给队列,而是投递给exchangeexchange根据我们投递时的路由键(routing key)再发送到特定的队列。这样的设计让消息可以灵活选路,发送到某一类的队列中,形成一对多的关系,而不仅仅是一对一。

Exchange

所以说RabbitMQ中的exchange很方便,很强大,它有这样几种类型:

 ● direct

 ● fanout

 ● topic

 ● headers(几乎用不到)

direct交换器很简单,有时候我们仅仅需要一个很简单的队列(消息投递到其中,然后不断消费它),这时候我们就可以用direct交换器,它的规则是:如果路由键匹配,消息就会被投递到对应的队列。

RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개

fanout交换器忽略路由键,把消息同时发到一批队列。

RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개

topicErlang
으로 작성되었습니다.

RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개

통신 개념

RabbitMQ는 단순한 대기열 서비스입니다. 생산자는 계속해서 메시지를 전달하고 소비자는 계속해서 메시지를 받습니다. 그러나 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를 사용할 수 있습니다. 교환기의 규칙은 라우팅 키가 일치하면 메시지가 해당 대기열로 전달된다는 것입니다. 🎜🎜RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개🎜🎜fanout교환기는 라우팅 키를 무시하고 메시지를 🎜일괄 대기열에 동시에🎜 보냅니다. 🎜🎜RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개🎜🎜topic은 다양한 라우팅 키를 기반으로 특정 유형의 대기열에 메시지를 보내는 것입니다. 🎜🎜🎜🎜🎜🎜 추천 관련 비디오 튜토리얼: "🎜PHP Tutorial🎜"🎜🎜위는 이 글의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! ! 🎜

위 내용은 RabbitMQ란 무엇인가요? RabbitMQ에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제