zoukankan      html  css  js  c++  java
  • RabbitMQ如何工作和RabbitMQ核心概念

    RabbitMQ是一个开源的消息代理软件。它接受来自生产者的消息并将其传递给消费者。它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间。

    RabbitMQ如何工作

    让我们简要介绍一下RabbitMQ的工作原理。

    让我们首先熟悉RabbitMQ的一些重要概念:

    • 生产者:发送消息的应用程序。

    • 消费者:接收消息的应用程序。

    • 队列:存储消息的缓冲区。

    • 消息:通过RabbitMQ从生产者发送给消费者的信息。

    • 连接:连接是应用程序和RabbitMQ代理之间的TCP连接。

    • 通道:通道是连接内的虚拟连接。当您从队列中发布或使用消息时 - 它们都是通过通道完成的。

    • Exchange:接收来自生产者的消息,并根据交换类型定义的规则将其推送到队列。要接收消息,需要将队列绑定到至少一个交换。

    • 绑定:绑定是队列和交换之间的链接。

    • 路由密钥:路由密钥是交换机查看的密钥,用于决定如何将消息路由到队列。路由密钥就像消息的地址。

    生产者将消息发送/发布给代理 - > 消费者从代理接收消息。RabbitMQ是生产者和消费者之间的通信中间件,即使它们在不同的机器上运行。

    当生产者向队列发送消息时,它不会直接发送,而是使用交换机发送。下面的设计演示了主要的三个组件如何相互连接。

    负责将消息路由到不同队列的交换代理。这样消息就可以从生产者接收到交换机,然后再次转发到队列。这被称为“发布”方法。

    消息将从队列中获取并消耗; 这被称为'消费'。

    将消息发送到多个队列

    通过使用更复杂的应用程序,我们将拥有多个队列。因此消息将在多个队列中发送它。

    向多个队列交换发送消息通过绑定和路由密钥连接到队列。绑定是您设置为将队列连接到交换机的“链接”。Routing键是一个消息属性。在决定如何将消息路由到队列时(取决于交换类型),交换机可能会查看此密钥。

    消息中心

    消息不会直接发布到队列,而是生成器将消息发送到交换机。一个交换负责的消息不同队列的路由。一个交换接受来自生产应用程序的消息并将其路由消息队列与绑定和路由键的帮助。阿结合是队列和交换之间的链接。

    RabbitMQ中的消息流

    • 制片人将消息发布到交换。创建交换时,必须指定它的类型。稍后将详细说明不同类型的交换。

    • 交换接收消息,现在负责该消息的路由。交换机将不同的消息属性考虑在内,例如路由密钥,具体取决于交换类型。

    • 必须从交换到队列创建绑定。在这种情况下,我们看到来自交换的两个不同队列的两个绑定。Exchange根据邮件属性将邮件路由到队列中。

    • 消息留在队列中,直到消费者处理它们

    • 消费者处理消息。

    交换类型

    1. 直接:直接交换基于消息路由密钥将消息传递到队列。

    2. 扇出:扇出交换将消息路由到绑定到它的所有队列。

    3. 主题:主题交换在路由密钥和绑定中指定的路由模式之间进行通配符匹配。

    4. 标头:标头交换使用邮件标头属性进行路由。

    RabbitMQ核心概念

    在深入挖掘RabbitMQ之前,需要先介绍一些重要的概念。

    • 生产者:发送消息的应用程序。

    • 消费者:接收消息的应用程序。

    • 队列:存储消息的缓冲区。

    • 消息:通过RabbitMQ从生产者发送给消费者的信息。

    • 连接:连接是应用程序和RabbitMQ代理之间的TCP连接。

    • 通道:通道是连接内的虚拟连接。当您从队列中发布或使用消息时 - 它们都是通过通道完成的。

    • Exchange:接收来自生产者的消息,并根据交换类型定义的规则将其推送到队列。要接收消息,需要将队列绑定到至少一个交换。

    • 绑定:绑定是队列和交换之间的链接。

    • 路由密钥:路由密钥是交换机查看的密钥,用于决定如何将消息路由到队列。路由密钥就像消息的地址。

    • AMQP:AMQP(高级消息队列协议)是RabbitMQ用于消息传递的协议。

    • 用户:可以使用给定的用户名和密码连接到RabbitMQ。可以为每个用户分配权限,例如在实例中读取,写入和配置权限的权限。

  • 相关阅读:
    发布自己的包到Nuget上
    asp.net core 中的MD5加密
    asp.net core csrf
    KNN算法
    ios测试apk
    python多进程
    机顶盒 gettimeofday()获取毫秒溢出
    Kiggle:Digit Recognizer
    Kaggle:Titanic: Machine Learning from Disaster
    Python抓取微博评论
  • 原文地址:https://www.cnblogs.com/Javame/p/10236898.html
Copyright © 2011-2022 走看看