springboot-kafka正则匹配topic

依赖

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

关键代码

  /**
 * @author samlen_tsoi
 * @date 2018/3/23
 */
@Slf4j
@RestController
@RequestMapping("kafka")
public class KafkaController {

    @Autowired
    private KafkaTemplate kafkaTemplate;

    /**
     * 同步到kafka
     *
     * @param topic 主题
     * @param mes 消息内容
     * @return
     */
    @GetMapping("syncKafka")
    public Result syncKafka(@RequestParam("topic") String topic,
                            @RequestParam("mes") String mes) {
        kafkaTemplate.send(topic, mes);
        return Result.ok();
    }

    /**
     * 这里使用正则匹配topic,其中【*】之前得加上【.】才能匹配到。
     *
     * @param record
     */
    @KafkaListener(topicPattern = "showcase.*")
    public void listenPattern(ConsumerRecord<String, String> record) {
        Optional<String> kafkaMessage = Optional.ofNullable(record.value());
        if (kafkaMessage.isPresent()) {
            log.info("topic : {}, mes : {}", record.topic(), kafkaMessage.get());
        }
    }

    /**
     * 指定单个topic
     *
     * @param record
     */
    @KafkaListener(topicPattern = "show-web")
    public void listenOne(ConsumerRecord<String, String> record) {
        Optional<String> kafkaMessage = Optional.ofNullable(record.value());
        if (kafkaMessage.isPresent()) {
            log.info("topic : {}, mes : {}", record.topic(), kafkaMessage.get());
        }
    }
}

showcase.*.是必须的,否则匹配不到目标topic。

控制台日志

2018-03-23 15:16:42.923  INFO 10297 --- [nio-9003-exec-1] o.a.kafka.common.utils.AppInfoParser     : Kafka version : 0.10.2.0
2018-03-23 15:16:42.923  INFO 10297 --- [nio-9003-exec-1] o.a.kafka.common.utils.AppInfoParser     : Kafka commitId : 576d93a8dc0cf421
2018-03-23 15:16:42.967  INFO 10297 --- [ntainer#0-0-L-1] s.t.s.web.controller.KafkaController     : topic : showcase-a, mes : a
2018-03-23 15:16:50.693  INFO 10297 --- [ntainer#0-0-L-1] s.t.s.web.controller.KafkaController     : topic : showcase-b, mes : b
2018-03-23 15:16:54.915  INFO 10297 --- [ntainer#0-0-L-1] s.t.s.web.controller.KafkaController     : topic : showcase-c, mes : c

github地址

showcase,类路径:samlen.tsoi.showcase.web.controller.KafkaController

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,338评论 19 139
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 15,000评论 1 180
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,545评论 4 61
  • 文/王鲲鹏 长虹飞架在小镇杨井 水泥钢筋 改变世界的混合物 第一次将触角延伸进这沉寂的沟壑 桥梁将脚稳稳踩进黄土的...
    心若鲲鹏阅读 248评论 0 0
  • 文|悟恩居士图|源自网络 在讲小说的情节设置之前,我需要说明一点,这一节说的情节设置是指针对期刊类小说而言,而不包...
    悟恩说事阅读 2,895评论 0 3

友情链接更多精彩内容