如何将 Apache kafka 与 Spring mvc 一起使用?可能吗?

Posted

技术标签:

【中文标题】如何将 Apache kafka 与 Spring mvc 一起使用?可能吗?【英文标题】:How to use Apache kafka with Spring mvc ? Is it possible? 【发布时间】:2015-08-12 00:01:40 【问题描述】:

我是 apache kafka 的初学者,并试图学习 confluent - kafka - rest - utils,但是我对如何使用它感到困惑。

在搜索过程中,我发现了这个文档https://spring.io/blog/2015/04/15/using-apache-kafka-for-integration-and-data-processing-pipelines-with-spring

这是非常好的文档,但它对我学习 rest-utils 没有帮助。

confluent kafka rest utils的git代码是

https://github.com/confluentinc/kafka-rest 演示如何使用rest kafka。但我想知道确切的程序以更加了解它。用一些简单的解释。谁能给我一些关于我如何使用休息客户端的链接。请指导我。

这可能是一个愚蠢的问题,但我没有其他选择。

提前致谢。

【问题讨论】:

我不太明白。是否要使用 Spring Integration? 是的,我确实想使用 Spring Integration。 【参考方案1】:

首先,创建一个Property.java 来设置配置并确保将其标记为@Component

 private static final String TOPIC = "Kafka_Example";

public Properties settingProperties() 
    Properties props = new Properties();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put("topic",TOPIC);
    return props;


public Property() 


public void sendMessage(String msg) 

    KafkaProducer<String, String> producer =
            new KafkaProducer<String, String>(settingProperties());

    ProducerRecord<String, String> record =
            new ProducerRecord<String, String>(settingProperties().getProperty("topic"),
            msg);
    producer.send(record);

    producer.close();


第二,在你Controller Class

@Autowired
private Property property;

现在,你终于可以制作自己的方法了

@GetMapping("/publish/name")
public String post(@PathVariable("name") final String name) 

    property.sendMessage(name);

    return "Published successfully";

确保您的TOPIC 名称在我的情况下是正确的Kafka_Example

这里是你必须运行的命令来设置东西

终端 1 - 运行 Zookerper : bin/zookeeper-server-start.sh config/zookeeper.properties 终端 2 - 运行 Kafka 服务器:bin/kafka-server-start.sh config/server.properties Terminal 3 - 创建 TOPIC : bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic your-topic-name 终端 3 - 通过控制台消费 : bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your-topic name --from-beginning

现在,你很高兴http://localhost:8080/api/publish/&lt;Your-name&gt;

我的 Pom 依赖项

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.5.0</version>
    </dependency>

添加上述依赖以使用Producer APIConsumer API

Refer Docs

如果觉得有用,请点赞。感谢您宝贵的时间。如果您有任何疑问,请在下方留言。

【讨论】:

【参考方案2】:

首先尝试 create a REST service using spring MVC 将 kafka 的东西放在一边。

一旦您能够运行“hello world”类型的 REST 服务,然后选择 Kafka Docs。

请参阅有关如何创建 kafka 集群以及运行默认控制台消费者和生产者程序来检查您的集群的文档。

现在,编写一个主 java 程序并使用 Kafka Clients API 创建一个 kafka 生产者。请参阅其文档。确保通过主程序发送的消息到达消费者。

现在,将这个主程序的内容注入到rest服务中,这样在请求体中传递的消息现在被传递到kafka集群并可供消费者读取。

希望对你有帮助。

【讨论】:

我会试试这个。感谢您的评论。 是的,我在 2 年前使用 Kafka Producer API 0.8.2 尝试过

以上是关于如何将 Apache kafka 与 Spring mvc 一起使用?可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Apache Kafka 与 Amazon S3 连接?

微服务架构 | 8.1 使用 Spring Cloud Stream 整合 Apache kafka #yyds干货盘点#

angular.js 与 apache kafka 的集成

Spring Cloud Data Flow (SCDF) + Apache Kafka - 在哪里部署 Kafka 代理?

Java Apache Kafka生产者元数据更新器和重试逻辑

Spring集成Kafka-注解,xml配置2种方式实现