<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="Shopware\Core\Framework\MessageQueue\Subscriber\EarlyReturnMessagesListener"/>

        <service id="Shopware\Core\Framework\MessageQueue\Subscriber\MessageQueueSizeRestrictListener">
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Service\MessageSizeCalculator"/>
            <argument>%shopware.messenger.enforce_message_size%</argument>

            <tag name="kernel.event_listener" event="Symfony\Component\Messenger\Event\SendMessageToTransportsEvent"/>
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\Subscriber\MessageQueueStatsSubscriber">
            <argument type="service" id="shopware.increment.gateway.registry"/>
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Stats\StatsService"/>

            <tag name="kernel.event_subscriber"/>
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\Telemetry\MessageQueueTelemetrySubscriber">
            <argument type="service" id="Shopware\Core\Framework\Telemetry\Metrics\Meter"/>
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Service\MessageSizeCalculator"/>

            <tag name="kernel.event_subscriber"/>
        </service>

        <!--Controller-->
        <service id="Shopware\Core\Framework\MessageQueue\Api\ConsumeMessagesController" public="true">
            <argument type="service" id="messenger.receiver_locator"/>
            <argument type="service" id="messenger.default_bus"/>
            <argument type="service" id="messenger.listener.stop_worker_on_restart_signal_listener"/>
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Subscriber\EarlyReturnMessagesListener"/>
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Subscriber\MessageQueueStatsSubscriber"/>
            <argument type="string">%messenger.default_transport_name%</argument>
            <argument type="string">%shopware.admin_worker.memory_limit%</argument>
            <argument type="string">%shopware.admin_worker.poll_interval%</argument>
            <argument type="service" id="lock.factory"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="messenger.transport.doctrine.factory" class="Shopware\Core\Framework\Adapter\Doctrine\Messenger\DoctrineTransportFactory">
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <tag name="messenger.transport_factory" />
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\SendEmailMessageJsonSerializer">
            <tag name="serializer.normalizer"/>
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\Service\MessageSizeCalculator">
            <argument type="service" id="messenger.default_serializer"/>
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\Middleware\RoutingOverwriteMiddleware">
            <argument>%shopware.messenger.routing_overwrite%</argument>
        </service>

        <service id="Shopware\Core\Framework\MessageQueue\Stats\MySQLStatsRepository">
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <argument>%shopware.messenger.stats.time_span%</argument>
        </service>


        <service id="Shopware\Core\Framework\MessageQueue\Stats\StatsService">
            <argument type="service" id="Shopware\Core\Framework\MessageQueue\Stats\MySQLStatsRepository"/>
            <argument>%shopware.messenger.stats.enabled%</argument>
        </service>

        <service id="Shopware\Core\Framework\Adapter\Messenger\Middleware\QueuedTimeMiddleware">
        </service>
    </services>
</container>
