如何实现kafka实时获取topic内容,如何往kafka中发送消息

本文介绍了如何使用SpringKafka的`@KafkaListener`注解实现实时消息消费,以及如何通过`KafkaTemplate`发送消息到Kafka主题。重点讲解了监听器配置和消息处理过程。
摘要由CSDN通过智能技术生成

1、实时获取topic内容

问题描述:如何实现当生产者往topic中写入一条消息时,消费者能够实时读取到这条消息

解决方法:使用 @KafkaListener 注解

代码示例:

    //kafka topic name
    private final String topicNameReceive = "your_topic_name";

    @KafkaListener(
            topics = {topicNameReceive},
            groupId = "your_kafka_group"
    )
    public void kafkaReceiveListener(ConsumerRecord<?, ?> record){
        log.info("监听到原始数据: " + record.value());
        String dtoStr = (String) record.value();
        log.info("数据转换前: " + dtoStr);
        RemoteSwitchEnqueue paramDto = JSONUtil.toBean(dtoStr, RemoteSwitchEnqueue.class);
        log.info("数据转换为Java对象: " + paramDto.toString());

        //异步调用操作方法
        CompletableFuture.runAsync(() -> {
            try {
                Thread.sleep(10000);
                consumeOrderProcess(paramDto);
            } catch (Exception e) {
                Thread.currentThread().interrupt(); // 保留中断状态
                System.out.println(e.getMessage());
                throw new IllegalStateException("consumeOrderProcess方法执行时被中断", e);
            }
        });
    }

注解参数:

  1. topics: 数组类型,表示要监听的Kafka主题。

  2. groupId: 字符串类型,表示监听器所属的消费者组。

  3. containerFactory: 用于创建Kafka监听容器的工厂类。

  4. errorHandler: 用于处理监听器内部错误的处理器。

  5. autoStartup: 布尔类型,表示是否在启动时自动启动监听器

 2、往kafka中写消息

引入 KafkaTemplate 类

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

 调用类中的send方法:

 String jsonStr = JSONUtil.toJsonStr(rsd);
 kafkaTemplate.send(your_topicName,jsonStr);

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值