Код: Выделить всё
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"]
Код: Выделить всё
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"
}
}
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
Мобильная версия