Как избежать остановки выполнения команд Symfony Messenger - PullRequest
0 голосов
/ 24 октября 2019

У меня проблема при получении сообщения от Kafka, если выдается исключение, то выполнение команды останавливается. Чего я хочу добиться, так это повторить неудачное сообщение n раз.

Из документации Symfony я прочитал, что только если выброшено UnrecoverableMessageHandlingException, команда остановит выполнение.

Эта часть обработчика сообщений, в которую выдается исключение.

        $account = $this->accountRepository->find($accountId);

        if (null === $account) {
            throw new CoreEntityNotFoundException(sprintf('Could not find account with id "%s"', $accountId));
        }

, а это файл messanger.yaml:

        # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling.
        failure_transport: failed

        transports:
            marketplace_core_entity_user:
                dsn: enqueue://default?queue[name]=marketplace.core.entity.user
                serializer: app.messenger.serializer.core.user
            marketplace_core_entity_account:
                dsn: enqueue://default?queue[name]=marketplace.core.entity.account
                serializer: app.messenger.serializer.core.account
            marketplace_core_entity_account_membership:
                dsn: enqueue://default?queue[name]=marketplace.core.entity.account-membership
                serializer: app.messenger.serializer.core.account_membership
            failed: 'doctrine://default?queue_name=failed'

        buses:
            app.kafka_consumer_bus:
                default_middleware: false
                middleware:
                    - doctrine_transaction
                    - handle_message

Я ожидаю, что команда продолжит выполнениеи повторите попытку еще раз n, но вместо этого он завершает выполнение команды.

...