title: Handling messages from different namespaces in Symfony Messenger with RMQ
body: <p>I'm building an application with micro services approach. For communication between services I use Symfony Messenger with RMQ transport. Basically everything works fine, but all my services has to be in same namespace. Once I tried to separate them into their own namespaces like <code>App\Mail</code>, <code>App\Auth</code> and so on messenger was complaining about lack of Event classes because whole namesapce is provided within header of message sent to RMQ. Is there any way I could map events from two different namespaces?</p>
  
  <p>For instance <code>Auth</code> app dispatches event <code>UserRegistered</code> so message has type of <code>App\Auth\Event\UserRegistered</code>. I want to handle that event in my Mail app but messenger can't consume it because my Event and Handler are under <code>App\Mail</code> namespace, so it can't find <code>App\Auth\Event\UserRegistered</code> class in "Mail" app. </p>
  
  <p>Example error I'm getting:</p>
  
  <pre class="lang-sh prettyprint-override"><code>In Serializer.php line 85:
  
    Could not decode message: Could not denormalize object of type App\Event\UserRequestedPasswordReset, no supporting normalizer found.
  </code></pre>
  
  <p>In this exact example I'm sending event UserRequestedPasswordReset from app that is under <code>App</code> namespace, and I'm trying to consume it with application under <code>App\Mail</code> namespace.</p>
  
  <p>I wasn't able to find anything helpful in documentation or over the internet. I was trying to alias <code>App\Event\UserRequestedPasswordReset</code> to <code>App\Mail\Event\UserRequestedPasswordReset</code> in container but no luck. I'm guessing that it's something doable with Denormalizers, but also couldn't find anything helpful over internet.</p>
  
  <p>Communication itself is working, messages are sent to RMQ and received in other services. My setup for RMQ is:
  I have multiple queues, one for each service. I have fanout exchange with those queues binded. Whenever I'm producing event I'm publishing it to exchange to populate it to all queues, so interested services can handle them.</p>
  
  <p>Example messenger configuration in one of my services. Besides event I'm using messenger to handle CQRS commands and queries, so I'm using three different buses.</p>
  
  <pre><code>messenger:
          default_bus: messenger.bus.commands
          buses:
              messenger.bus.commands:
                  middleware:
  #                    - validation
  #                    - doctrine_transaction
              messenger.bus.queries:
                  middleware:
  #                    - validation
              messenger.bus.events:
                  default_middleware: allow_no_handlers
                  middleware:
  #                    - validation
          transports:
              events:
                  dsn: "%env(MESSENGER_AMQP_DSN)%"
                  options:
                      exchange:
                          name: ecommerce_events
                          type: fanout
                      queue:
                          name: ecommerce_auth
  
          routing:
              'App\Event\UserCreated': events
              'App\Event\UserModified': events
              'App\Event\UserChangedPassword': events
              'App\Event\UserRequestedPasswordReset': events
  </code></pre>
  
  <p>I would like to keep my applications in different namespaces and still be able to handle events from other services</p>