Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring Kafka与嵌入式Kafka的集成测试_Java_Spring Boot_Apache Kafka_Spring Kafka_Spring Kafka Test - Fatal编程技术网

Java spring Kafka与嵌入式Kafka的集成测试

Java spring Kafka与嵌入式Kafka的集成测试,java,spring-boot,apache-kafka,spring-kafka,spring-kafka-test,Java,Spring Boot,Apache Kafka,Spring Kafka,Spring Kafka Test,我有一个spring引导应用程序,它让一个使用者从一个集群中的主题消费,并在不同集群中生成另一个主题 现在我正试图使用spring embedded Kafka编写集成测试用例,但有一个问题,KafkaTemplate无法注册。具有该名称的bean已在类路径资源中定义 消费者类别 @Service public class KafkaConsumerService { @Autowired private KafkaProducerService kafkaProducerService;

我有一个spring引导应用程序,它让一个使用者从一个集群中的主题消费,并在不同集群中生成另一个主题

现在我正试图使用spring embedded Kafka编写集成测试用例,但有一个问题,
KafkaTemplate无法注册。具有该名称的bean已在类路径资源中定义

消费者类别

@Service
public class KafkaConsumerService {

@Autowired
private KafkaProducerService kafkaProducerService;

@KafkaListener(topics = "${kafka.producer.topic}")
public void professor(List<Professor> pro) {
    pro.forEach(kafkaProducerService::produce);
    
   }

}
@Service
public class KafkaProducerService {

@Value("${kafka.producer.topic}")
private String topic;

@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;

public void produce(Professor pro) {
    kafkaTemplate.send(topic,"professor",pro);
  }

 }
@EnableKafka
@SpringBootTest(classes = {KafkaProducerConfigTest.class})
@RunWith(SpringRunner.class)
public class KafkaProducerServiceTest {

@Autowired
private KafkaConsumerService kafkaConsumerService;

@Test
public void testReceive() throws Exception {
     kafkaConsumerService.professor(Arrays.asList(new Professor()));
     
     //How to check messages is sent to kafka?
}

 }
测试类

@Service
public class KafkaConsumerService {

@Autowired
private KafkaProducerService kafkaProducerService;

@KafkaListener(topics = "${kafka.producer.topic}")
public void professor(List<Professor> pro) {
    pro.forEach(kafkaProducerService::produce);
    
   }

}
@Service
public class KafkaProducerService {

@Value("${kafka.producer.topic}")
private String topic;

@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;

public void produce(Professor pro) {
    kafkaTemplate.send(topic,"professor",pro);
  }

 }
@EnableKafka
@SpringBootTest(classes = {KafkaProducerConfigTest.class})
@RunWith(SpringRunner.class)
public class KafkaProducerServiceTest {

@Autowired
private KafkaConsumerService kafkaConsumerService;

@Test
public void testReceive() throws Exception {
     kafkaConsumerService.professor(Arrays.asList(new Professor()));
     
     //How to check messages is sent to kafka?
}

 }
错误

 The bean 'kafkaTemplate', defined in com.kafka.configuration.KafkaProducerConfigTest, could not be registered. 
 A bean with that name has already been defined in class path resource [com/kafka/configuration/KafkaProducerConfig.class] and overriding is disabled.
 Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

还有人能帮我验证发送到嵌入式Kafka服务器的消息吗

注意我收到了一些不推荐的警告

KafkameBedded类型已弃用

不推荐使用KafkameBedded类型的getPartitionsPerTopic()方法

不推荐使用KafkaTestUtils类型的方法producerProps(KafkameBedded)

启动2.1

默认情况下已禁用Bean重写,以防止意外重写Bean。如果依赖重写,则需要将
spring.main.allow bean definition overriding
设置为
true


关于反对意见;有关
@EmbeddedKafka
,请参阅javadocs。它被
EmbeddedKafkaBroker

替换,谢谢您的回复,先生,我这样做了,但是现在不同的问题
字段kafkamebed在com.kafka.configuration.KafkaProducerConfigTest中需要一个类型为“org.springframework.kafka.test.rule.kafkamebedded”的bean,但找不到它。
;现在是嵌入式卡夫卡布洛克<代码>@Autowired public Embedded Kafkabroker broker