【发布时间】:2019-06-07 10:24:50
【问题描述】:
我正在 Spring Boot 框架中构建一组微服务,每个微服务都与 Kafka 集成以进行消息传递。似乎有 3 个独立但相关的 Spring 库提供 Kafka 集成:
我的目标是抽象出底层消息传递系统的细节,并为我的微服务提供一个简单的消息传递服务层来发送和接收消息。我希望此服务层与我的域类 (POJO) 一起使用,而不是让微服务与构建 Message 实例有关。例如:
public interface MyMessagingService {
void send(MyPojo obj);
MyPojo receive();
}
其次,我想添加 Avro 支持,但首先我将让它与 JSON 一起使用。
切入正题,似乎有多种方法可以实现这一点,这非常令人困惑,尤其是在各种可用的 Spring 库的情况下。我可以为我的微服务提供这样一个共享消息传递层的最直接的方法是什么,它们只需要关注域类?
我遇到了来自 Spring Integration 的 @MessagingGateway,它看起来很有希望,但这似乎与发送和回复语义相关,而且我的服务不会期待来自 Kafka 的回复消息。
我看过的例子,下面有一些链接,似乎仍然必须自己构造 Message 实例。有没有更简单的方法?
【问题讨论】:
-
三个库的一点上下文:Spring Kafka是Spring对Kafka的基本支持; Spring Integration Kafka 建立在此之上,因此您可以将它与 Spring Integration 一起使用; Spring Cloud Stream 使用 Spring Integration。
标签: spring apache-kafka spring-integration messaging spring-cloud-stream