..  include:: /Includes.rst.txt

..  _feature-106261-1762614000:

=========================================================================================
Feature: #106261 - Align command line arguments of Message consumer with Symfony original
=========================================================================================

See :issue:`106261`

Description
===========

This change aligns the command line arguments of the TYPO3 Console
`messenger:consume` command with the original Symfony Messenger implementation.


The following new options have been added:

*   :bash:`--limit` / :bash:`-l`: Limit the number of received messages
*   :bash:`--failure-limit` / :bash:`-f`: The number of failed messages the worker can consume
*   :bash:`--memory-limit` / :bash:`-m`: The memory limit the worker can consume
*   :bash:`--time-limit` / :bash:`-t`: The time limit in seconds the worker can handle new messages
*   :bash:`--bus` / :bash:`-b`: Name of the bus to which received messages should be dispatched
*   :bash:`--all`: Consume messages from all receivers
*   :bash:`--keepalive`: Whether to use the transport's keepalive mechanism if implemented

Scheduler Integration
=====================

The command can be configured as a scheduler task in TYPO3, enabling automated
consumption of messages from the configured transports. This is particularly useful
for processing asynchronous messages in the background.

This integration helps projects adopt asynchronous message handling by providing
a reliable way to process messages without manual intervention. Messages can be
dispatched asynchronously during regular request handling and consumed in the
background by the scheduler task, improving application performance and user experience.

..  important::

    The :bash:`messenger:consume` command blocks other scheduler tasks from executing
    while it is running. It is therefore **strongly recommended** to set the
    :bash:`--time-limit` option to a value lower than the scheduler's cron interval.

    For example, if the scheduler runs every 5 minutes (300 seconds), set the time
    limit to 240 seconds (4 minutes) to ensure the task completes before the next
    scheduler run and allows other tasks to execute.

Usage
=====

Consume messages from a specific receiver:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver

Consume messages with a message limit:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver --limit=10

Stop the worker after 2 failed messages:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver --failure-limit=2

Stop the worker when memory limit is exceeded:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver --memory-limit=128M

Stop the worker after a time limit:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver --time-limit=3600

Consume from specific queues only:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume my_receiver --queues=fasttrack

Consume from all configured receivers:

..  code-block:: bash

    php vendor/bin/typo3 messenger:consume --all


.. index:: PHP-API, ext:core
