【问题标题】:How to add embedded kafka in SpringBoot Application如何在 Spring Boot 应用程序中添加嵌入式 kafka
【发布时间】:2019-06-11 22:37:21
【问题描述】:

我在我的项目中使用 Kafka 和 Springboot,现在这里我有外部 Kafka 集群和 SpringBoot 微服务项目。

使用 yml 文件,我成功创建了 Kafka 生产者和消费者,然后应用程序和 kafka 都可以正常通信。

现在我想在我的 sprintboot 项目中使用嵌入式 kafka。类似于在 Activemq 代码之后嵌入的东西。

spring:

  # Embedded ActiveMQ Configuration Example
  activemq:
      broker-url: vm://embedded?broker.persistent=false,useShutdownHook=false
      in-memory: true
      non-blocking-redelivery: true

我用谷歌搜索并阅读了很多相同的文章,但无法获得清晰的图片。在这里,我不希望这个嵌入式服务器仅用于 junit 测试,而是
想要在我的生态系统中不设置任何外部 Kafka 组件的情况下进行功能测试。

我真的不知道该怎么做,有人可以帮助我吗?

提前致谢

【问题讨论】:

  • 您找到如何将 kafka 嵌入到您的应用程序(不是测试)了吗?我也对它感兴趣。

标签: spring-boot apache-kafka embedded-kafka


【解决方案1】:

添加依赖

    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka-test</artifactId>
        <scope>test</scope>
    </dependency>

在你的测试中创建类似的东西

    public static KafkaEmbedded embeddedKafka = new KafkaEmbedded(2, true, 2, "messages");

你已经准备好使用它了——无论是功能测试还是单元测试都无关紧要。

您可以指定代理、分区等的数量。

您可以像其他方式一样配置生产者和消费者。

【讨论】:

  • 嗨 senseiwu,当我说不要寻找 Junit 测试时,意味着应用程序会像这样流动。控制器 -> Actvice AMQ 生产者 -> AMQ 消费者 -> Kafka 生产者(这里我想使用嵌入式服务器) -> 最后是 Kafka 消费者。你能告诉我我可以在哪里适合这门课吗?或者任何例子都会有很大的帮助。谢谢
  • EmbeddedKafka 的 Kafka Producer 将像使用真正的 Kafka 集群一样进行配置。在您的初始化代码中,您将调用container.start() 并使用KafkaTemplate&lt;K, V&gt; template = new KafkaTemplate&lt;&gt;(producerFactory); 如果有帮助,请首先尝试使用真正的外部Kafka 代理运行测试,以便您清楚配置部分。然后像我写的那样用嵌入式服务器替换。 Controller -> Actvice AMQ producer -> AMQ Consumer -> 部分与是否嵌入无关
  • 好吧,就像我写的那样,我已经用外部 Kafka 集群配置了它,我唯一想做的就是嵌入以消除任何外部组件的依赖关系。但我正在尝试你提出的任何建议。谢谢
猜你喜欢
  • 2016-10-09
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 2017-11-08
  • 2020-07-18
  • 2018-09-29
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多