简体   繁体   English

春天的卡夫卡。 未启动 EmbeddedKafkaBroker

[英]Spring Kafka. Not started EmbeddedKafkaBroker

I am coding Kafka Broker and Consumer to catch messages from the application.我正在编写 Kafka Broker 和 Consumer 代码以捕获来自应用程序的消息。 When trying to get messages from Consumer, an error occurs尝试从Consumer获取消息时,发生错误

java.net.ConnectException: Connection refused: no further information
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:50)
    at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:216)
    at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:531)
    at org.apache.kafka.common.network.Selector.poll(Selector.java:483)
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:540)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:262)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:233)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:212)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:230)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:444)
    at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1267)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1231)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1211)
    at org.springframework.kafka.test.utils.KafkaTestUtils.getRecords(KafkaTestUtils.java:303)
    at org.springframework.kafka.test.utils.KafkaTestUtils.getRecords(KafkaTestUtils.java:280)

On the application side (Producer), there is also a connection error在应用端(Producer),也出现了连接错误

2020-03-25 12:29:33.689  WARN 25786 --- [ad | producer-1] org.apache.kafka.clients.NetworkClient   : [Producer clientId=producer-1, transactionalId=tx0] Connection to node -1 (<here broker hostname>:9092) could not be established. Broker may not be available.

My project has the following dependencies:我的项目具有以下依赖项:

compile "org.springframework.kafka:spring-kafka-test:2.4.4.RELEASE"
compile "org.springframework.kafka:spring-kafka:2.4.4.RELEASE"

Code of My Kafka Broker我的卡夫卡经纪人代码

public class KafkaServer {

    private static final String BROKERPORT = "9092";
    private static final String BROKERHOST = "localhost";
    public static final String TOPIC1 = "fss-fsstransdata";
    public static final String TOPIC2 = "fss-fsstransscores";
    public static final String TOPIC3 = "fss-fsstranstimings";
    public static final String TOPIC4 = "fss-fssdevicedata";
    @Getter
    private Consumer<String, String> consumer;

    private EmbeddedKafkaBroker embeddedKafkaBroker;

    public void run() {

        String[] topics = {TOPIC1, TOPIC2, TOPIC3, TOPIC4};

        this.embeddedKafkaBroker = new EmbeddedKafkaBroker(
                1,
                false,
                1,
                topics
        ).kafkaPorts(BROKERPORT);

        Map<String, Object> configs = new HashMap<>(KafkaTestUtils.consumerProps("consumer", "false", this.embeddedKafkaBroker));
        this.consumer = new DefaultKafkaConsumerFactory<>(configs, new StringDeserializer(), new StringDeserializer()).createConsumer();

        this.consumer.subscribe(Arrays.asList(topics));
    } 
}

Please help to deal with the situation.请帮助处理这种情况。 I am not good at kafka architecture and how it can be implemented on Spring.我不擅长 kafka 架构以及如何在 Spring 上实现它。

If you are using spring then you need to annotate your bean with @EmbeddedKafka and then use @Autowire on EmbeddedKafkaBroker如果您使用的是 spring,那么您需要使用@EmbeddedKafka注释您的 bean,然后在 EmbeddedKafkaBroker 上使用@Autowire

Example embeded kafka annotation configuration:嵌入 kafka 注释配置示例:

@EmbeddedKafka(
    partitions = 1, 
    controlledShutdown = false,
    brokerProperties = {// place your proerties here
})

What I would do is to create a spring bean KafkaServerConfig and place all my logic for configuration and bean construction inside.我要做的是创建一个 spring bean KafkaServerConfig并将我所有的配置和 bean 构建逻辑放在里面。

PS: it should be noted that EmbeddedKafkaBroker is intended for unit tests. PS:需要注意的是 EmbeddedKafkaBroker 是用于单元测试的。

The EmbeddedKafkaBroker is designed to be used from a Spring application context or by a JUnit4 @Rule or @ClassRule or by a JUnit5 Condition . EmbeddedKafkaBroker旨在从 Spring 应用程序上下文或 JUnit4 @Rule@ClassRule或 JUnit5 Condition

To use it outside those environments, you must call afterPropertiesSet() to initialize it and destroy() to shut it down.要在这些环境之外使用它,您必须调用afterPropertiesSet()来初始化它并调用destroy()来关闭它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring Boot找不到嵌入式KafkaBroker Bean - Spring Boot Cannot Find EmbeddedKafkaBroker Bean EmbeddedKafkaBroker设置属性引发NoClassDefFoundError:kafka / zk / EmbeddedZookeeper - EmbeddedKafkaBroker set properties throws NoClassDefFoundError: kafka/zk/EmbeddedZookeeper 无法获得 kafka 的偏移滞后。 原因:org.apache.kafka.shaded.common.config.ConfigException - Unable to get offset lags for kafka. Reason: org.apache.kafka.shaded.common.config.ConfigException 我是kafka的新手。 我正在创建的消费者没有收到生产者发布的消息 - I am new to kafka. The consumer that I am creating is not getting messages that the producer publishes NestJs 卡夫卡到 Spring 卡夫卡 - NestJs Kafka to Spring Kafka 我想通过log4j记录风暴日志并将日志发送到kafka。 结果是kafka STORM可以自己记录日志log4j,但不能将日志发送到kafka - I want to record STORM log by log4j and send log to kafka. the result is kafka STORM can record log by itself log4j but not send log to kafka 春天卡夫卡和卡夫卡流 - Spring Kafka and Kafka Streams Hibernate 5事务在Spring 4之前尚未启动 - Hibernate 5 Transaction not started by Spring 4 JMock和Spring 3入门 - Getting started with JMock and Spring 3 Kafka分区再平衡spring for kafka - Kafka partition rebalancing in spring for kafka
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM