dusterio / laravel-plain-sqs

Custom SQS connector for Laravel (or Lumen) that supports third-party, plain JSON messages
MIT License
131 stars 92 forks source link

Cannot create job with multiple queues #45

Closed wangfei800 closed 4 years ago

wangfei800 commented 4 years ago

I have queue config: 'default' => env('QUEUE_DRIVER', 'sqs-plain'), 'segment' => [ 'driver' => 'sqs-plain', 'key' => env('S3_ACCESS_KEY'), 'secret' => env('S3_SECRET_KEY'), 'prefix' => env('SQS_URL'), 'queue' => env('APP_ENV').'-queue-internal', 'region' => env('SQS_REGION'), 'retry_after' => 90, ],

    'sqs-plain' => [
        'driver' => 'sqs-plain',
        'key' => env('S3_ACCESS_KEY'),
        'secret' => env('S3_SECRET_KEY'),
        'prefix' => env('SQS_URL'),
        'queue' => env('APP_ENV').'-queue-external',
        'region' => env('SQS_REGION'),
        'retry_after' => 90,
    ],

Two queues on the sqs-plain connection, when I run worker, they can process jobs on the two queues; but, when I tried to create jobs (push to sqs),

dispatch($job->setPlain())->onConnection('sqs-plain')->onQueue('segment');

I got error:

GuzzleHttp\Exception\InvalidArgumentException: IDN conversion failed (errors: IDNA_ERROR_EMPTY_LABEL) in file /Users/thomas/projects/beach/vendor/guzzlehttp/guzzle/src/functions.php on line 384 Stack trace:

  1. GuzzleHttp\Exception\InvalidArgumentException->() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/guzzle/src/functions.php:384
  2. GuzzleHttp_idn_uri_convert() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/guzzle/src/Client.php:220
  3. GuzzleHttp\Client->buildUri() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/guzzle/src/Client.php:113
  4. GuzzleHttp\Client->sendAsync() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/Handler/GuzzleV6/GuzzleHandler.php:43
  5. Aws\Handler\GuzzleV6\GuzzleHandler->__invoke() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:87
  6. Aws\WrappedHttpHandler->__invoke() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/ClientSideMonitoring/AbstractMonitoringMiddleware.php:126
  7. Aws\ClientSideMonitoring\AbstractMonitoringMiddleware->__invoke() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/Sqs/SqsClient.php:193
  8. Aws\Sqs\SqsClient->Aws\Sqs{closure}() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/Middleware.php:126
  9. Aws\Middleware->Aws{closure}() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:203
    1. GuzzleHttp\Promise\Promise->callHandler() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:156
    2. GuzzleHttp\Promise\Promise->GuzzleHttp\Promise{closure}() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/TaskQueue.php:47
    3. GuzzleHttp\Promise\TaskQueue->run() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:246
    4. GuzzleHttp\Promise\Promise->invokeWaitFn() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:223
    5. GuzzleHttp\Promise\Promise->waitIfPending() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:267
    6. GuzzleHttp\Promise\Promise->invokeWaitList() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:225
    7. GuzzleHttp\Promise\Promise->waitIfPending() /Users/thomas.wang/projects/beach/vendor/guzzlehttp/promises/src/Promise.php:62
    8. GuzzleHttp\Promise\Promise->wait() /Users/thomas.wang/projects/beach/vendor/aws/aws-sdk-php/src/AwsClientTrait.php:58

I have tried to debug, I found the Sqs/Connector.php cannot get the correct Configs to create SqsClient.