Rabbit MQ does support the Request/Response style messaging https://www.rabbitmq.com/direct-reply-to.html . Microservices that need to collaborate can do so in several ways: Listen for topics of interest on a message bus RPC over AMQP (linked to above) HTTP based communication. Each approach has its advantages and disadvantages. Listening for topics on a message bus can require multiple queues (not really an issue); such as queue per service; or queue per topic; but it de-couples the sender from the receiver, and allows for resiliency (if a service goes down and is not listening to messages on the queue, they'll hang out there until it comes up to consume them). It also provides a measure of observability of messages in the system. You also have to ensure that your messages have a contract; and that that contract is consistent among all of your services (has the same structure). Gilt.io's VP Engineering has a talk that is really helpful in understanding the place for code generation and code contracts for services. https://www.youtube.com/watch?v=j6ow-UemzBc RPC over AMQP has the resilience of the first approach, but is clunky in an event-driven architecture. It's synchronous and it's difficult to get around that issue. This is not a great approach for asynchronous event-driven systems; and it couples the resiliency and uptime of the system to the individual services being able to communicate with each other at the same time. NotAGreatPlan.gif. HTTP Based communication is the 'easiest' to implement from an architectural perspective, but the least resilient. You must manually implement the circuit breaker pattern so you aren't waiting for a down service to respond; and you must limit your call depth to 1 service (A service being called must be able to handle the request; it cannot also call another service). Failure to do so will cause... problems. Jimmy Bogard talks about this in his talk "Avoiding Microservices Mega Disasters": https://www.youtube.com/watch?v=gfh-VCTwMw8 Other answerers have stated a few design patterns to be on the lookout for: CQRS, Publish/Subscribe, Circuit Breaker, API Gateway, and Service Locator pattern. Read up on these patterns, as they will apply in the different scenarios.