Php 使用Laravel在AWS上设置SQS消息队列
我们正在将现有应用程序从Linode迁移到AWS。在Linode上,我们使用beanstalkd作为消息队列,现在我们想尝试SQS。我们使用两个队列:默认队列和高队列。我们对beanstalkd的配置如下:Php 使用Laravel在AWS上设置SQS消息队列,php,laravel,message-queue,amazon-sqs,beanstalkd,Php,Laravel,Message Queue,Amazon Sqs,Beanstalkd,我们正在将现有应用程序从Linode迁移到AWS。在Linode上,我们使用beanstalkd作为消息队列,现在我们想尝试SQS。我们使用两个队列:默认队列和高队列。我们对beanstalkd的配置如下: 'connections' => [ 'beanstalkd' => [ 'driver' => 'beanstalkd', 'host' => env('BEANSTALKD_HOST', 'localhost'),
'connections' => [
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_HOST', 'localhost'),
'queue' => 'default',
'retry_after' => 86400,
],
'high' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_HOST', 'localhost'),
'queue' => 'high',
'retry_after' => 86400,
],
],
'connections' => [
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'prefix' => env('AWS_SQS_URL'),
'queue' => 'default',
'region' => env('AWS_REGION'),
],
'high' => [
'driver' => 'sqs',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'prefix' => env('AWS_SQS_URL'),
'queue' => 'high',
'region' => env('AWS_REGION'),
],
],
我现在正试图在AWS上做类似的事情。现在的配置如下所示:
'connections' => [
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_HOST', 'localhost'),
'queue' => 'default',
'retry_after' => 86400,
],
'high' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_HOST', 'localhost'),
'queue' => 'high',
'retry_after' => 86400,
],
],
'connections' => [
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'prefix' => env('AWS_SQS_URL'),
'queue' => 'default',
'region' => env('AWS_REGION'),
],
'high' => [
'driver' => 'sqs',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'prefix' => env('AWS_SQS_URL'),
'queue' => 'high',
'region' => env('AWS_REGION'),
],
],
我在AWS上创建了一个名为“dev”的队列,我有一个URL:我得到的错误是:
Error executing "ReceiveMessage" on "https://sqs.eu-west-2.amazonaws.com/ACCOUNT-ID/dev/high"; AWS HTTP error: Client error: `POST https://sqs.eu-west-2.amazonaws.com/ACCOUNT-ID/dev/high` resulted in a `400 Bad Request` response:
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>A (truncated...)
AWS.SimpleQueueService.NonExistentQueue (client): The specified queue does not exist for this wsdl version. - <?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>AWS.SimpleQueueService.NonExistentQueue</Code><Message>The specified queue does not exist for this wsdl version.</Message><Detail/></Error><RequestId>REQUEST-ID</RequestId></ErrorResponse>
它表示“指定的队列不存在”。我应该在AWS中创建不同的队列,还是配置中存在问题
管理器配置:
[program:worker]
command=php /home/dev/default/current/artisan queue:work sqs --sleep=0 --daemon --quiet --timeout=0 --delay=3 --tries=3 --env=development --queue="high,default"
process_name=%(program_name)s_%(process_num)02d
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=dev
numprocs=8
stdout_logfile=
很抱歉迟了答复。我在谷歌搜索同样的问题,我发现了这个问题 url应该是
https://sqs.eu-west-2.amazonaws.com/your-account-id
。url后没有队列名称
。因此,您需要从url中删除dev
谢谢很抱歉回复晚了。我在谷歌搜索同样的问题,我发现了这个问题 url应该是
https://sqs.eu-west-2.amazonaws.com/your-account-id
。url后没有队列名称
。因此,您需要从url中删除dev
谢谢