kafka 监听mysql de_kafka监听出现的问题,解决和剖析

问题如下:

kafka为什么监听不到数据

kafka为什么会有重复数据发送

kafka数据重复如何解决

为什么kafka会出现俩个消费端都可以消费问题

kafka监听配置文件

一. 解决问题一(kafka监听不到数据)

首先kafka监听不得到数据,检查如下

检查配置文件是否正确(可能会出现改了监听地址,监听Topic,监听的地址的数量问题)

检查接收数据的正确性(比如原生的代码,可能是用byte序列化接收的数据,而你接收使用String。也是配置文件序列化问题,还有与发送者商量问题)

检查kafka版本问题(一般的版本其实是没什么问题的,只有个别版本会出现监听不到问题)

没有加

@Component 犯了最不应该出差错的问题

如果出现监听不到数据的问题,那么就试试更改方法一二,如果不可以在去试试方法三,之前出现这个问题也是查过 一般查到都会说  “低版本的服务器接收不到高版本的生产者发送的消息”,但是净由测试使用 用1.0.5RELEASE 和 2.6.3反复测试,并没有任何的问题。

如果按照版本一致,那么根本就不现实,因为可能不同的项目,springboot版本不一致的话,可能有的springboot版本低,那么你还得要求自己维护项目版本升级?如果出现第四种情况就无话可说了。

二. 解决问题二(kafka为什么会有重复数据发送)

重复数据的发送问题如下

可能在发送者的那里的事务问题。mysql存储事务发生异常导致回滚操作,但是kafka消息却是已经发送到了服务器中。此事肯定会出现重复问题

生产者设置时间问题,生产发送设置的时间内,消息没完成发送,生产者以为消费者挂掉,便重新发送一个,导致重复

offset问题,当项目重启,offset走到某一个位置已扔到kafka服务器中,但是项目被重启.那么offset会是在原本重启的那一个点的地方再

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答你关于Spring集成Kafka消费者监听问题。在Spring集成Kafka消费者监听的过程中,我们可以使用Spring Kafka提供的注解@KafkaListener来实现消息的订阅和消费。 下面是一个简单的示例: 首先,我们需要在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.5.5.RELEASE</version> </dependency> ``` 接着,在Spring Boot应用程序中创建一个KafkaListenerConfig类,用于配置Kafka消费者: ``` @Configuration @EnableKafka public class KafkaListenerConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Bean public Map<String, Object> consumerConfigs() { Map<String, Object> props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group"); return props; } @Bean public ConsumerFactory<String, String> consumerFactory() { return new DefaultKafkaConsumerFactory<>(consumerConfigs()); } @Bean public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory()); return factory; } } ``` 在上面的代码中,我们使用@EnableKafka注解启用Kafka监听器,并通过@Bean注解创建了一个Kafka消费者工厂和一个Kafka监听器容器工厂。 接下来,我们可以在Spring Boot应用程序中创建一个Kafka消息监听器类: ``` @Component public class KafkaMessageListener { @KafkaListener(topics = "test-topic", groupId = "test-group") public void listen(String message) { System.out.println("Received message: " + message); } } ``` 在上面的代码中,@KafkaListener注解指定了要订阅的Kafka主题和消费者组ID。在监听方法中,我们可以处理收到的消息。 最后,我们需要在application.properties文件中配置Kafka的连接信息: ``` spring.kafka.bootstrap-servers=localhost:9092 ``` 这样,我们就完成了Spring集成Kafka消费者监听的配置。当应用程序运行时,它将自动订阅指定的Kafka主题并处理收到的消息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值