如何在SNS发布方法中设置超时?

时间:2016-12-19 18:57:52

标签: php amazon-web-services aws-sdk amazon-sns

我在PHP应用程序中使用AWS SNS服务将消息发送到队列。

如果互联网连接中断,应用程序应该继续运行而不编写消息。但是在队列上发布消息的方法有一个很长的超时,它使应用程序无法使用互联网。

我在AWS SDK中找不到任何可以设置较小超时的地方。 有没有办法做到这一点?

以下是snsClient对象的构造示例。 我编辑了params以使用http超时,因为@Anthony Neace告诉我,我也尝试使用request.options connect_timeout,因为我在这里找到了http://docs.aws.amazon.com/aws-sdk-php/v2/guide/configuration.html
我已经改变了PC的网关,以模拟互联网何时关闭,我得到了例外 [curl] 28:在3000毫秒后解决超时问题https://sns.sa-east-1.amazonaws.com/

    use Aws\Sns\SnsClient;

    SnsClient::factory([
        'version'     => '...',
        'region'      => '...',
        'credentials' => [
            'key'    => '...',
            'secret' => '...',
        ],
        'http' => [
            'timeout' => 5
        ],
        'request.options' => [
            'connect_timeout' => 5
        ]
    ]);

1 个答案:

答案 0 :(得分:3)

您可以在客户端的构造函数中设置超时。这将适用于您使用该客户端进行的所有请求,包括SnsClient Publish。 以下是文档中的示例,修改为使用SnsClient: 使用Aws \ Sns \ SnsClient; // 5秒后超时 $ client = new SnsClient([     'region'=> “美西-2”,     'version'=> '最新',     'http'=> [         'timeout'=>五     ] ]); 进一步阅读: 适用于PHP的AWS开发工具包 - AWSClient构造函数(SnsClient继承此构造函数) 适用于PHP的AWS开发工具包 - SnsClient 适用于PHP的AWS开发工具包 - 客户端配置选项 - 超时