当前位置: 首页 > news >正文

AMQP-核心概念-终章

本文参考以下链接摘录翻译:
https://www.rabbitmq.com/tutorials/amqp-concepts

连接(Connections)

AMQP 0-9-1连接通常是长期保持的。AMQP 0-9-1是一个应用级别的协议,它使用TCP来实现可靠传输。连接使用认证且可以使用TLS保护。当一个应用不再需要连接到代理服务器时,它应该优雅第关闭它的AMQP连接,而不是突然关闭底层的TCP连接。

通道(Channels)

有些应用需要多个连接连向消息代理。尽管如此,同时保持许多TCP连接打开是不必要的,因为这样做会消耗很多系统资源,且让配置防火墙变得困难。AMQP连接用通道实现了多路复用,通道可以被当成轻量级的连接,它们共享一个TCP连接。

客户端做的每一次操作都发生在一个通道上。一个通道上的通讯是与其他通道上的通讯完全隔离的,因此每个协议方法也携带了一个通道ID(通道号),通道ID是一个整数,消息代理和客户端用通道ID来弄清某个操作来自哪个通道。

一个通道只存在于一个连接的上下文,它没有自己的上下文。当一个连接关闭,该连接上的所有通道也被关闭了。

对于使用多线程或进程的程序,为每个线程或进程开启一个通道是很常见的,线程或进程间不共享通道。

虚拟主机(Virtual Hosts)

为了在一个单一的消息代理中容纳多个隔离的环境(用户组,交换机,队列等)AMQP提供了虚拟主机的概念(virtual hosts, vhosts)。它们与许多流行的Web服务器使用的虚拟主机类似,提供了完全隔离的环境,用于容纳AMQP实体。协议客户端在连接协商阶段订阅它们自己想要的虚拟主机(vhosts)。

AMQP是可扩展的(AMQP is Extensible)

AMQP 0-9-1有几个扩展点:

  • 自定义交换机类型 : 让开发者实现自己想要的路由机制,以实现现有交换机不擅长的功能,如,基于地理数据的路由
  • 交换机和队列声明可以包含额外的消息代理可使用的属性。例如,RabbitMQ中消息在每个队列中的存活时间(per-queue message TTL)采用该方式实现
  • 消息代理专门对协议的扩展。例如,RabbitMQ实现的协议扩展
  • 可以引入新的AMQP 0-9-1 方法类
  • 消息代理可以用额外的插件来扩展。例如,RabbitMQ的管理前端和HTTP API就是一个插件
http://www.lryc.cn/news/409989.html

相关文章:

  • 在WPF中使用WebView2详解
  • 僵尸进程的例子
  • 消息中间件分享
  • 12. kubernetes调度——污点Taint和容忍Toleration
  • 第100+18步 ChatGPT学习:R实现SVM分类
  • react函数学习——useState函数
  • 方天云智慧平台系统 GetCompanyItem SQL注入漏洞复现
  • C语言同时在一行声明指针和整型变量
  • thinkphp框架远程代码执行
  • 【公式】博弈论中的核心算法:纳什均衡公式解析
  • 计算机网络面试题2
  • Linux网络——深入理解传入层协议TCP
  • 快速搞定分布式RabbitMQ---RabbitMQ进阶与实战
  • 5万字长文吃透快手大数据面试题及参考答案(持续更新)
  • WordPress原创插件:启用关闭经典编辑器和小工具
  • 萝卜快跑:自动驾驶的先锋与挑战
  • 得到xml所有label 名字和数量 get_xml_lab.py,get_json_lab.py
  • 数据结构算法-排序(二)
  • Linux安装与配置
  • AI赋能交通治理:非机动车监测识别技术在城市街道安全管理中的应用
  • 水电站泄洪放水预警广播系统解决方案
  • 【Django】ajax和django接口交互(获取新密码)
  • Logback 日志打印导致程序崩溃的实战分析
  • 新加坡 Numen Cyber 与香港光环云数据有限公司达成战略合作
  • Laravel魔术方法:框架的隐秘力量
  • 系统复习Java日志体系
  • 网络管理linux命令
  • PowerDNS架构解析与安装部署指南
  • Ubuntu 20.04.6 安装 Elasticsearch
  • Python for循环迭代原理(迭代器 Iterator)