使用php手动创建sqs

创建SQS客户端

require './aws/aws-autoloader.php';
use Aws\Sqs\SqsClient;
$config = array(
    'credentials' => array(
        'key'    => 'xxxx',
        'secret' => 'xxxx',
    ),                      #验证
    /*'debug'=>false,*/     #开启调试
    'region' => 'us-west-2',#区域
    'version' => 'latest',  #版本

);
/*创建sqs客户端*/
$client = new SqsClient($config);


创建自定义队列

$result = $client->createQueue([
    'QueueName' => 'aws_sqs_study', // 必填项,默认为标准队列
]);


1.png

给队列赋予权限

$result = $client->addPermission([
    'AWSAccountIds' => [
        '390645677983'
    ], #aws帐户id
    'Actions' => [
        'ChangeMessageVisibility',
        'DeleteMessage',
        'GetQueueAttributes',
        'GetQueueUrl',
        'ReceiveMessage',
        'SendMessage',
    ],  #队列相关的操作
    'Label' => 'joychi_002956',       #唯一标识符 最多80位 允许的字符包括字母、连字符(-)和下划线(_)
    'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/390645677983/aws_sqs_study'
]);


2.png


向队列中推送消息

$result = $client->sendMessage([
        'MessageBody' => json_encode([
            'name'=>'Joychi',
            'age'=>'1',
            'phone'=>'6666666',
            'address'=>'江苏省南通市'
        ]), // 必填
        'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/390645677983/aws_sqs_study', // 必填
]);
var_dump($result);


4.png


获取队列中的消息

$result = $client->receiveMessage([
    'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/390645677983/aws_sqs_study', // REQUIRED
]);
foreach ($result->get('Messages') as $messagesBody){
    print_r($messagesBody);
}


A4D0XAMK[24W49NSAKV`NVK.png

删除队列中的消息

$result = $client->deleteMessage([
    'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/390645677983/aws_sqs_study', // 必填
    'ReceiptHandle' => 'AQEB4oe9LjZQ592saiIEwFfgtnCWd9/RF9YmRyES+sbjjx80gus7VVaKUg+lIlzIYMH8q7io5KeMzE0iU0tFjOAZJRkAZmAdp4oYj6nMokAGodm1ZpnxoDKv/LYTLUgQV2BSrR+q1I6kCN+7Inz/0auCeiiELDlmE0/0OYnOe4obcOUrunLe8M4JfJPRGysmU3hc3szLrlnVP+5f9bAoJKJxain8+KETaOQDwHKXum5JQtZxNHwfIwTWaQeX/YlwCe8ko8mfrsHvCMDYEKNSKl66R4Wdtw/2yFS0YQ9xtZXdi0r0MAVlOM+Zmgbnebo+JDX0hoq06aZqGZ2LFrwjnN2FMFeZlEWtFGfyAu7UxQqMcUru3bl3pFYcldUfaTazoUZYhWlheJtIZXv8hNBIc3WALA==' //必填,上一步骤返回的消息id
]);
var_dump($result);


此时页面中已经没有原先的消息了


%H4QV0T`8UQ30ZG5(``M}(L.jpg


小结

  1. 其实创建sqs队列,完全可以登录aws官网进行页面上的傻瓜式操作,但是既然是学习,就应该不能偷懒,学习下php的创建方法

    一开始,光看sdk文档我也不懂从何下手,但是这时候如果熟悉下界面上的傻瓜式创建操作,你就知道了大概的流程是怎样的,

    这个时候再来用php的方式创建就知道怎么写了。也算是一种学习方式把!

  2. 虽然一年前也做过这种,当时是微信+sqs+sns实现的一套订阅发布的功能,但是由于公司项目需求一直没有定下来,所以也没有

    写文章记录下心得,就在前几天领导说了,需要把sqs部分的需求更改下,少了sns这部分,而且之前用的是2的版本,今天就直接

    上3的版本,顺便也以文章的方式记录下来。至于2和3的区别在哪里,官网也有解释。这里不再过多叙述

  3. aws算是云服务的领头羊吧。影响力和实力都杠杠的。只不过文档英文居多。尤其是sdk的文档,相对于国内知名的马大大家的阿

    里云来说,阅读起来稍有点难度而已了。不过大家也不用害怕。没有越不过的坎嘛。

  4. 本例子呢。虽然不难。也算是基础部分。不过后面我会一直跟进,sns,s3之类的,也欢迎大家前来批评指点

上一篇: 什么是Amazon SQS

下一篇: Laravel5.4异常处理

分享

版权属于:破冰者博客

文章链接:https://ice-breaker.cn/post/15

转载时必须以链接形式注明原始出处及本声明。

表情