Почему после сбоя SQS не размещает неудачное сообщение на DLQ?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему после сбоя SQS не размещает неудачное сообщение на DLQ?

Сообщение Anonymous »

Я запускаю этот работник: < /p>

Код: Выделить всё

php -d memory_limit=-1 bin/console messenger:consume sqs_channel_manager -vv

< /code>
и работник не сбои: < /p>
14:29:32 INFO      [messenger] Received message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived"]
14:29:32 WARNING   [messenger] Error thrown while handling message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived. Sending for retry #1 using 922 ms delay. Error: "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: " ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived","message_id" => null,"retryCount" => 1,"delay" => 922,"error" => "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: ","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
14:29:37 INFO      [messenger] Received message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived"]
14:29:37 WARNING   [messenger] Error thrown while handling message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived. Sending for retry #3 using 3676 ms delay. Error: "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: " ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived","message_id" => null,"retryCount" => 3,"delay" => 3676,"error" => "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: ","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
14:30:08 INFO      [messenger] Received message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived"]
14:30:08 CRITICAL  [messenger] Error thrown while handling message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived. Removing from transport after 5 retries. Error: "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: " ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived","message_id" => null,"retryCount" => 5,"error" => "Handling "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived" failed: ","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
14:30:08 INFO      [messenger] Rejected message App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived will be sent to the failure transport Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport.  ["class" => "App\Domain\Event\ChannelManager\ChannelManagerEventHasReceived","transport" => "Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport"]

Transports sqs_channel_manager настроен так:

Код: Выделить всё

framework:
messenger:
failure_transport: failed
transports:
failed: 'doctrine://default?table_name=failed_messages'
sqs_channel_manager:
dsn: 'https://sqs.eu-north-1.amazonaws.com/XXXXXX/sqs_channel_manager_test'
serializer: App\Infrastructure\Messenger\ChannelManagerSerializer
options:
access_key: '%env(AWS_ACCESS_KEY_ID)%'
secret_key: '%env(AWS_SECRET_ACCESS_KEY)%'
region: '%env(AWS_REGION)%'
queue_name: '%env(CHANNEL_MANAGER_QUEUE_NAME)%'
< /code>
и это очередь SQS, очередь имеет политику RedRive: < /p>
aws sqs get-queue-attributes --queue-url https://sqs.eu-north-1.amazonaws.com/XXXXXX/sqs_channel_manager_test --attribute-names RedrivePolicy
{
"Attributes": {
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:eu-north-1:XXXXX:sqs_channel_manager_test_dlq\",\"maxReceiveCount\":1}"
}
}

< /code>
Но после неудачи сообщением не размещено по очереди букв: < /p>
aws sqs get-queue-attributes --queue-url https://sqs.eu-north-1.amazonaws.com/XXXXXXXX/sqs_channel_manager_test_dlq  --attribute-names ApproximateNumberOfMessages
{
"Attributes": {
"ApproximateNumberOfMessages": "0"
}
}

dawfle_transport предотвращает размещение сообщения на DLQ? Установка deffs_transport не имеет эффекта:
sqs_channel_manager:
failure_transport: null
dsn: '%env(SQS_CHANNEL_MANAGER_TRANSPORT_DSN)%'
serializer: App\Infrastructure\Messenger\ChannelManagerSerializer
options:
access_key: '%env(AWS_ACCESS_KEY_ID)%'
secret_key: '%env(AWS_SECRET_ACCESS_KEY)%'
region: '%env(AWS_REGION)%'
queue_name: '%env(CHANNEL_MANAGER_QUEUE_NAME)%'
< /code>
Также я использую пользовательский сериализатор: < /p>


Подробнее здесь: https://stackoverflow.com/questions/797 ... e-upon-dlq
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»