小编Tec*_*eek的帖子

过滤kafka消息的最佳方式应该是什么

我正在使用来自卡夫卡主题的数据,其中包括区号。我必须仅过滤某些区号的数据。任何人都可以建议解决这个问题的最佳方法吗?

这是我的监听器代码的样子。最佳实践是将数据解析为对象(因为我将有效负载映射到 TEST 对象)并根据我需要过滤的值过滤数据,或者 kafka 是否提供了我可以使用此过滤过程的任何其他库。

Kafka监听器方法

@Service
public class Listener{

    @KafkaListener(topics = "#{@topicName}")
        public void listen(String payload) throws IOException {

            LOGGER.info("received payload from topic='{}'", payload);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

            TEST test = objectMapper.readValue(payload,TEST.class);

        }
}
Run Code Online (Sandbox Code Playgroud)

我的卡夫卡配置类:

@Configuration
public class Config {


    @Bean
    public Map<String, Object> consumerConfigs() {
        Map<String, Object> properties = new HashMap<>();
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, applicationConfiguration.getKafkaBootStrap());
        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, applicationConfiguration.getKafkaKeyDeserializer());
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, applicationConfiguration.getKafkaValueDeserializer());
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, applicationConfiguration.getKafkaGroupId());
        properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, applicationConfiguration.getKafkaAutoOffsetReset());
        return properties;
    }

    @Bean
    public ConsumerFactory<String, String> consumerFactory() {
        return new DefaultKafkaConsumerFactory<>(consumerConfigs());
    } …
Run Code Online (Sandbox Code Playgroud)

regex apache-kafka kafka-consumer-api spring-kafka

5
推荐指数
1
解决办法
1万
查看次数

使用 Java 模式提取四位数字的正则表达式

我正在尝试使用 Java 模式匹配器在文件扩展名之前提取四位数字。它抛出没有组发现异常。有人可以帮我解决这个问题吗?

String fileName = "20210101-000000_first_second_1234.csv";
Pattern pattern = Pattern.compile("\\\\d{4}");
System.out.println(pattern.matcher(fileName).group(4));
Run Code Online (Sandbox Code Playgroud)

我想1234从文件名中获取。我使用 regex 编译了文件模式\\\\d{4}。返回四个组。因此,第四组应该假设返回1234未返回的内容,而不是抛出组未找到异常。

java regex

2
推荐指数
1
解决办法
82
查看次数