How much extra resource RabbitMQ shovels consume?

I have few Spring/Spring Boot apps that communicate over (clustered 3 nodes of RabbitMQ v3.10.0).
There is one publisher: App_A,
And a few Consumers: App_B, App_C, etc.

Previous dev implemented the following flow (I’ll describe for one destination, all others have the same):

  • Each app is connected to a separate virtual host on the same RabbitMQ node( vHost_A, vHost_B … etc. ).
  • App_A publishes exchanges vHost_A/exch_B (fanount) whichroutes to only one queue_b.out
  • there is a shovel that shoves from vHost_A/queue_b.out to vHost_B/exch_B
  • vHost_B/exch_B is also “fanount”, which routes to only one queue_b.in
  • App_B consumes from vHost_B/queue_b.in

As I understand, there is much easier and straight way to flow messages like:

  • App_A publish to vHost_common/exch_B which routes to queue_b.in
  • App_B consumes from vHost_common/queue_b.in

I’m new to RabbitMQ and unable to ask those devs what the purpose of those shovels is. And I have a few questions:

  1. Is it a common pattern to shovel like that? I was trying to find info, but couldn’t
  2. What pros of using that shovels flow?
  3. How much extra resources CPU/Memory can this shovel consume (compared to use of one vHost_common)?

Thanks.

Read more here: Source link