阿里云AMQP PHP使用示例

简介: 本文主要介绍如何通过 PHP SDK 连接阿里云AMQP服务。

概述

本文主要介绍如何通过 PHP SDK 连接阿里云AMQP服务。

测试过程

1、composer.json
{
    "require" : {
        "php-amqplib/php-amqplib" : "^2.9"
    },
    "require-dev" : {
        "phpunit/phpunit" : "^5"
    }
}
2、send code
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
include("AliyunCredentialsProvider.php");

/*接入点*/
$host = "18********617278.mq-amqp.cn-hangzhou-a.aliyuncs.com";
/*默认端口*/
$port = 5672;
/*资源隔离*/
$virtualHost = "yutaoamqptest";
/*阿里云的accessKey*/
$accessKey = "********";
/*阿里云的accessSecret*/
$accessSecret = "********";
/*主账号id*/
$resourceOwnerId = '18********617278';

$connectionUtil = new ConnectionUtil($host, $port, $virtualHost, $accessKey, $accessSecret, $resourceOwnerId);
$connection = $connectionUtil->getConnection();

echo "dwe";

$channel = $connection->channel();

$channel->queue_declare('queuephp', false, false, false, false);

$msg = new AMQPMessage('Hello World!');

$channel->basic_publish($msg, '', 'queuephp');
echo " [x] Sent 'Hello World!'\n";

$channel->close();
$connection->close();
?>

4、receive code


<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
include("AliyunCredentialsProvider.php");

/*接入点*/
$host = "18********617278.mq-amqp.cn-hangzhou-a.aliyuncs.com";
/*默认端口*/
$port = 5672;
/*资源隔离*/
$virtualHost = "yutaoamqptest";
/*阿里云的accessKey*/
$accessKey = "********";
/*阿里云的accessSecret*/
$accessSecret = "********";
/*主账号id*/
$resourceOwnerId = '18********617278';

$connectionUtil = new ConnectionUtil($host, $port, $virtualHost, $accessKey, $accessSecret, $resourceOwnerId);

$connection = $connectionUtil->getConnection();


$channel = $connection->channel();

$channel->queue_declare('queuephp', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {
    echo ' [x] Received ', $msg->body, "\n";
};

$channel->basic_consume('queuephp', '', false, true, false, false, $callback);

while (count($channel->callbacks)) {
    $channel->wait();
}

$channel->close();
$connection->close();
?>
6、AliyunCredentialsProvider.php
<?php
use PhpAmqpLib\Connection\AMQPStreamConnection;

Class ConnectionUtil {
    private $host;
    private $port;
    private $virtualHost;
    private $accessKey;
    private $accessSecret;
    private $resourceOwnerId;
    
    function __construct($host, $port, $virtualHost, $accessKey,
        $accessSecret, $resourceOwnerId) {
            $this->host = $host;
            $this->port = $port;
            $this->virtualHost = $virtualHost;
            $this->accessKey = $accessKey;
            $this->accessSecret = $accessSecret;
            $this->resourceOwnerId = $resourceOwnerId;
    }
    
    private function getUser() {
        $t = '0:' . $this->resourceOwnerId . ':' . $this->accessKey;
        return base64_encode($t);
    }
    
    private function getPassword() {
        $ts = (int)(microtime(true)*1000);
        $value = utf8_encode($this->accessSecret);
        $key = utf8_encode((string)$ts);
        $sig = strtoupper(hash_hmac('sha1', $value, $key, FALSE));
        return base64_encode(utf8_encode($sig . ':' . $ts));
    }
    
    public function getConnection() {
        $username = $this->getUser();
        $password = $this->getPassword();
        
        return new AMQPStreamConnection($this->host, $this->port,
            $username, $password,
            $this->virtualHost, false);
    }
}
?>
7、目录结构

_

参考链接

amqp-php-demo

相关文章
|
6月前
|
PHP 对象存储 Docker
阿里云云效产品使用问题之PHP和LAMP项目部署回滚不生效,该怎么办
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
存储 算法 安全
PHP AES加解密示例
PHP AES加解密示例
113 0
PHP AES加解密示例
|
3月前
|
缓存 NoSQL PHP
使用PHP-redis实现键空间通知监听key失效事件的技术与代码示例
通过上述方法,你可以有效地在PHP中使用Redis来监听键空间通知,特别是针对键失效事件。这可以帮助你更好地管理缓存策略,及时响应键的变化。
99 3
|
4月前
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
105 4
|
4月前
|
PHP
php使用方式示例
【8月更文挑战第2天】php使用方式示例
35 2
|
4月前
|
PHP
【Azure Developer】PHP网站使用AAD授权登录的参考示例
【Azure Developer】PHP网站使用AAD授权登录的参考示例
|
5月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
37 4
|
5月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
24 1
|
4月前
|
敏捷开发 数据可视化 测试技术
阿里云云效产品使用合集之怎么在php composer安装自己服务器的代码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
27 0