Publisher mesajı topic-ə atır, kimdir subscribe olan — hamısı alır. Publisher-ın subscriber-i tanımasına ehtiyac yoxdur.
Servislər arasında loose coupling: Publisher kimi dəyişikliyi göndər, kimlər eşitsə eşitsin — sənə aidiyyatı yoxdur.
Publisher mesajı atıb gedər. Subscriber-lar öz temposu ilə oxusun. Fire-and-Forget + Guaranteed Delivery.
Apache Kafka, RabbitMQ, Redis Pub/Sub, Google Cloud Pub/Sub, AWS SNS/SQS.
@Service
public class OrderEventPublisher {
private final KafkaTemplate<String, OrderEvent> kafka;
public void publishOrderCreated(Order order) {
OrderEvent event = new OrderEvent(order.getId(), "CREATED");
kafka.send("orders", order.getId().toString(), event);
// Publisher işini bitirdi — subscriber-ları bilmir!
}
}@Component
public class EmailListener {
@KafkaListener(topics = "orders", groupId = "email-group")
public void onOrderCreated(OrderEvent event) {
emailService.sendConfirmation(event.getOrderId());
}
}