For your use case, simple routing based on the queue from one broker is enough.
Keep only one broker working on any server or on a separate server.
Now, when completing tasks, add them to separate queues.
From microservice 1:
In [2]: add.apply_async(args=(12, 1), queue='queue1')
Out[2]: <AsyncResult: 2fa5ca61-47bc-4c2c-be04-e44cbce7680a>
,
celery worker -A tasks -l info -Q queue1
2:
In [2]: sub.apply_async(args=(12, 1), queue='queue2')
Out[3]: <AsyncResult: 4d42861c-737e-4b73-bfa8-6d1e86241d57>
,
celery worker -A tasks -l info -Q queue2
, .