kafka集成

laik7k3q  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(302)

我正在spring-boot框架中构建一组微服务,每个微服务都与kafka进行消息传递集成。似乎有3个独立但相关的spring库提供了kafka集成:
Spring Kafka
Kafka的Spring
Spring Cloud溪
我的目标是抽象出底层消息传递系统的细节,并为我的微服务提供一个简单的消息传递服务层来发送和接收消息。我希望这个服务层与我的域类(pojo)一起工作,而不是让微服务与构建相关 Message 示例。例如:

public interface MyMessagingService {

    void send(MyPojo obj);

    MyPojo receive();
}

第二,我想添加avro支持,但首先我会让它与json一起工作。
直截了当地说,实现这一点似乎有多种方法,这是非常令人困惑的,特别是对于各种可用的spring库。我能为我的微服务提供这样一个共享消息传递层的最直接的方法是什么,它们只需要关心域类?
我遇到过 @MessagingGateway 从spring集成来看,这看起来很有前途,但这似乎与发送和回复语义相结合,而且我的服务不需要kafka的回复消息。
我所看到的示例(下面有一些链接)似乎仍然需要自己构造消息示例。有没有更简单的方法?
https://codenotfound.com/spring-kafka-spring-integration-example.html
https://www.baeldung.com/spring-cloud-stream

csbfibhn

csbfibhn1#

如果你的。我们的目标是抽象出底层消息传递系统的细节,并为我的微服务提供一个简单的消息传递服务层来发送和接收消息”,那么为什么不使用springcloudstream呢?
代码开发人员甚至不必知道他/她编写的代码将是某些消息系统的一部分。例如,

@SpringBootApplication
public class SampleStreamApplication  {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleStreamApplication.class);
    }

    @Bean
    public Function<String, String> uppercase() {
        return value -> value.toUpperCase();
    }
}

以上是一个完整且功能齐全的spring云流应用程序(在kafka绑定器的上下文中),它将从“input”主题接收并将传递的值发送给“output”主题 uppercase(..) 功能。
是的,json、avro等的类型转换都是透明的。
显然有一些细节,但当你有更具体的问题时,我们当然可以讨论。现在我建议先看一些参考文档。

相关问题