Ответ
Нет, в современных проектах обычно приходится работать с несколькими типами сервисов и технологий интеграции.
С какими сервисами можно работать:
- REST/HTTP API: Наиболее распространенный тип для синхронного взаимодействия. (Spring Boot, JAX-RS).
- Message Brokers (Асинхронные): Для событийно-ориентированной архитектуры (Kafka, RabbitMQ).
- Сервисы баз данных: Как реляционные (PostgreSQL, MySQL), так и NoSQL (MongoDB, Redis).
- Cloud-сервисы: Специализированные сервисы от провайдеров (AWS S3, AWS Lambda, Google Pub/Sub).
- gRPC: Для высокопроизводительного RPC-взаимодействия между сервисами.
Пример REST-контроллера на Spring Boot:
@RestController
@RequestMapping("/api/payments")
public class PaymentController {
private final PaymentService paymentService;
@PostMapping
public ResponseEntity<PaymentResponse> createPayment(@RequestBody @Valid PaymentRequest request) {
PaymentResponse response = paymentService.process(request);
return ResponseEntity.status(HttpStatus.CREATED).body(response);
}
}
Пример консьюмера сообщений из Kafka:
@KafkaListener(topics = "payment-events")
public void handlePaymentEvent(PaymentEvent event) {
log.info("Processing event: {}", event.getId());
// Обработка события
}
Выбор технологии зависит от требований к пропускной способности, задержкам, согласованности данных и существующего стека.