En utilisant Kafka comme système de messagerie dans une architecture de microservices, quels sont les avantages d'utiliser Spring-Kafka par rapport à Spring-Cloud-Stream + Spring-Cloud-Starter-Stream-Kafka?
Le framework Spring Cloud Stream prend en charge plus de systèmes de messagerie et a donc une conception plus modulaire. Mais qu'en est-il de la fonctionnalité? Y a-t-il un écart entre la fonctionnalité de spring-kafka et spring-cloud-stream + spring-cloud-starter-stream-kafka? Quelle API est la mieux conçue?
Au plaisir de lire vos opinions
Spring Cloud Stream avec kafka binder s'appuie sur Spring-kafka. Ainsi, le premier a toutes les fonctionnalités prises en charge par la suite, mais le premier sera plus lourd. Ci-dessous quelques points vous aident à faire le choix:
Utilisez Spring Cloud Stream lorsque vous créez un système où n canal est utilisé pour l'entrée effectue un certain traitement et l'envoie à n canal de sortie. En d'autres termes, il s'agit davantage d'un système RPC pour remplacer les appels API RESTful par exemple.
Si vous prévoyez de faire un système de sourcing d'événements, utilisez Spring-Kafka où vous pouvez publier et vous abonner au même flux. C'est quelque chose que Spring Cloud Stream ne vous permet pas de faire facilement car il interdit les éléments suivants
public interface EventStream {
String STREAM = "event_stream";
@Output(EventStream.STREAM)
MessageChannel publisher();
@Input(EventStream.STREAM)
SubscribableChannel stream();
}
Voici quelques éléments que Spring Cloud Stream vous aide à éviter de faire: