#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
6 min read
•Question 23 of 28hard

How do microservices communicate via APIs?

Understanding microservices API patterns.

What You'll Learn

  • Synchronous vs asynchronous communication
  • Common patterns
  • Implementation examples

Communication Types

Synchronous (HTTP/gRPC)

code.jsJavaScript
Service A → HTTP Request → Service B
Service A ← HTTP Response ← Service B

Asynchronous (Message Queue)

code.jsJavaScript
Service A → Message → Queue → Service B
(No waiting for response)

Synchronous Patterns

REST

code.jsJavaScript
// Order service calling User service
async function getOrderWithUser(orderId) {
  const order = await Order.findById(orderId);
  const user = await fetch(`http://user-service/users/${order.userId}`)
    .then(r => r.json());
  return { ...order, user };
}

gRPC

code.jsJavaScript
// Faster, type-safe communication
const client = new UserServiceClient('user-service:50051');
const user = await client.getUser({ id: userId });

Asynchronous Patterns

Message Queue (RabbitMQ/Kafka)

code.jsJavaScript
// Publisher (Order Service)
channel.publish('orders', 'order.created', Buffer.from(JSON.stringify(order)));

// Consumer (Notification Service)
channel.consume('order-notifications', (msg) => {
  const order = JSON.parse(msg.content);
  sendEmail(order.userEmail, 'Order confirmed');
});

Service Discovery

code.jsJavaScript
// Using Consul or environment variables
const userServiceUrl = process.env.USER_SERVICE_URL || 'http://user-service:3000';

// Circuit breaker for resilience
const CircuitBreaker = require('opossum');
const breaker = new CircuitBreaker(fetchUser, {
  timeout: 3000,
  errorThresholdPercentage: 50,
  resetTimeout: 30000,
});