以下是一个示例的Java代码,演示了如何处理七个topic数据的到达顺序并在所有数据到达后进行处理和入库操作。

import java.util.HashMap;
import java.util.Map;

public class TopicDataProcessor {
    private Map<String, Boolean> topicStatus;
    
    public TopicDataProcessor() {
        topicStatus = new HashMap<>();
        topicStatus.put('topic1', false);
        topicStatus.put('topic2', false);
        topicStatus.put('topic3', false);
        topicStatus.put('topic4', false);
        topicStatus.put('topic5', false);
        topicStatus.put('topic6', false);
        topicStatus.put('topic7', false);
    }
    
    public synchronized void processData(String topic, String data) {
        // 处理接收到的数据
        System.out.println('Received data for topic: ' + topic + ', Data: ' + data);
        
        // 将topic的状态设置为已到达
        topicStatus.put(topic, true);
        
        // 检查是否所有topic数据都已到达
        boolean allTopicsArrived = true;
        for (boolean status : topicStatus.values()) {
            if (!status) {
                allTopicsArrived = false;
                break;
            }
        }
        
        // 如果所有topic数据都已到达,则进行处理和入库操作
        if (allTopicsArrived) {
            System.out.println('All topics data received. Processing and storing data...');
            // 进行数据处理和入库操作的逻辑
            // ...
            
            // 重置topic状态,以便接收下一批数据
            resetTopicStatus();
        }
    }
    
    private void resetTopicStatus() {
        for (String topic : topicStatus.keySet()) {
            topicStatus.put(topic, false);
        }
    }
}

你可以按照以下方式使用上述代码:

public class Main {
    public static void main(String[] args) {
        TopicDataProcessor processor = new TopicDataProcessor();
        
        // 模拟接收到topic数据
        processor.processData('topic3', 'Data for topic 3');
        processor.processData('topic1', 'Data for topic 1');
        processor.processData('topic5', 'Data for topic 5');
        // ... 接收到其他topic数据
        
        // 假设最后接收到topic7的数据
        processor.processData('topic7', 'Data for topic 7');
    }
}

在上述示例中,TopicDataProcessor类负责跟踪每个topic的到达状态,并在所有topic数据到达后进行处理和入库操作。processData方法用于接收每个topic的数据,将到达的topic状态设置为已到达,并检查是否所有topic数据都已到达。如果所有topic数据都已到达,则执行数据处理和入库操作,并将所有topic状态重置为未到达,以便接收下一批数据。

请注意,示例中的处理和入库操作逻辑需要根据实际需求进行实现。

Java 多Topic数据到达顺序处理 - 保证所有数据都到达后进行入库操作

原文地址: https://www.cveoy.top/t/topic/bKuO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录