前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AMQP 消息服务应用协议

AMQP 消息服务应用协议

作者头像
用户3147702
发布2022-06-27 13:18:56
7740
发布2022-06-27 13:18:56
举报
文章被收录于专栏:小脑斧科技博客

1. 概述

上文中我们介绍了一种流行的 Broker 分布式架构:分布式架构 Broker 简介 rabbitmq 就是在 broker 架构的基础上实现的,在这个架构基础上,rabbitmq 实现了 AMQP 消息队列协议。 与 broker 架构的简单清晰不同,AMQP 对消息队列应用层的消息、连接、传输等进行了抽象,定义了各种消息队列的功能与消息传输模式,也因此显得有些复杂。 各种语言都实现了 AMQP 协议相关的各种操作方法,因此,基于 AMQP 设计的 rabbitmq 也就实现了平台、语言无关的消息队列通信。

2. AMQP 的功能

AMQP 实现了各种消息交换体系:

  1. 存储转发(多个消息发送者,单个消息接收者)
  2. 分布式事务(多个消息发送者,多个消息接收者)
  3. 发布订阅(多个消息发送者,多个消息接收者)
  4. 基于内容的路由(多个消息发送者,多个消息接收者)
  5. 文件传输队列(多个消息发送者,多个消息接收者)
  6. 点对点连接(单个消息发送者,单个消息接收者)

3. AMQP 的三层抽象

与 OSI 网络分层非常类似,AMQP 将整个通信模型分为三层:

3.1. 模型层

模型层的主要职责是为客户端提供实现各种业务功能的指令集。 包括对 connection、channel、exchange、envelope、routing、buffering、message queue 的抽象指令。 让用户可以在各种平台、语言环境下无差别的操作整个队列服务。

3.2. 会话层

会话层提供可靠的传输过程,将消息、应答、指令在服务器与客户端应用之间传输。 负责会话的同步机制和错误处理。

3.3. 传输层

负责消息的传输,快速打包解包需要传输的二进制编码,维护多个会话的连接。 AMQP 的实现者可以使用任何传输协议实现传输层。

4. AMQP 模型

作为一个消息队列,他的主要功能是消息的路由和缓存。 AMQP 提供了类似功能的模型:

5. PHP 操作 AMQP

RabbiMQ Clients & Developer Tools -- http://www.rabbitmq.com/devtools.html

这里介绍一下 PHP 操作 AMQP 的相关扩展和库,PHP 操作 AMQP 有两种方式可供选择:

5.1. 官方扩展 amqp

执行下列 shell 命令:

代码语言:javascript
复制
wget http://pecl.php.net/get/amqp-1.0.0.tgz
tar zxvf amqp-1.0.0.tgz
cd amqp-1.0.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
make && make install

在 php.ini 中添加 extension=amqp.so,重启服务器即可完成扩展的安装。 它的使用可以参看:

PHP MANUAL AMQP -- http://php.net/manual/pl/book.amqp.php

5.2. php-amqplib

php-amqplib 是一个基于上述的官方扩展的开源项目,提供了更加方便的面向对象操作和错误处理,他是 Rabbitmq 官方推荐使用的操作方式。 使用他之前,需要先如上述安装官方的 amqp 扩展,然后可以通过 githup 上拉取最新的源码进行安装:

php-amqplib/php-amqplib -- https://github.com/php-amqplib/php-amqplib

除此之外,推荐使用 composer 进行依赖和安装,在 composer.json 中加入:

代码语言:javascript
复制
{
    "require": {
        "php-amqplib/php-amqplib": "2.6.*"
    }
}

执行 composer.phar install 即可完成安装。 使用时需要增加引用代码:

代码语言:javascript
复制
<?php
require_once __DIR__.'/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
?>

具体使用方法可以参看 rabbitmq 官方文档或 php-amqplib 源码中的 example 目录下的源码。

6. 参考资料

amqp — https://www.amqp.org/ rabbitmq tutorials — https://www.rabbitmq.com/tutorials/amqp-concepts.html。 AMQP 协议 — http://langyu.iteye.com/blog/759663/ php manual amqp — http://php.net/manual/pl/book.amqp.php。 给PHP安装amqp扩展 — http://blog.csdn.net/clh604/article/details/16343605。 php-amqplib — https://github.com/php-amqplib/php-amqplib。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. AMQP 的功能
  • 3. AMQP 的三层抽象
    • 3.1. 模型层
      • 3.2. 会话层
        • 3.3. 传输层
        • 4. AMQP 模型
        • 5. PHP 操作 AMQP
          • 5.1. 官方扩展 amqp
            • 5.2. php-amqplib
            • 6. 参考资料
            相关产品与服务
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档