import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class QueueSync {
public static void main(String[] args) {
String configFilePath = args[0]; // Configuration file path as first argument
if (configFilePath == null || configFilePath.isEmpty()) {
System.err.println("Error: Configuration file path is required.");
System.exit(1);
}
try {
syncQueues(configFilePath);
} catch (IOException e) {
System.err.println("Error reading/processing config file: " + e.getMessage());
System.exit(1);
}
}
public static void syncQueues(String configFilePath) throws IOException {
// Read configuration from file
Map<String, List<String>> queueConfigs = readQueueConfigs(configFilePath);
// Iterate through each queue configuration
for (Map.Entry<String, List<String>> entry : queueConfigs.entrySet()) {
String queueName = entry.getKey();
List<String> resources = entry.getValue();
// Simulate dry-run synchronization
System.out.println("Syncing queue: " + queueName);
for (String resource : resources) {
System.out.println(" - Resource: " + resource);
// In a real scenario, this would involve actual queue synchronization logic.
// For dry-run, we just print the resource.
}
System.out.println("---");
}
}
private static Map<String, List<String>> readQueueConfigs(String configFilePath) throws IOException {
Map<String, List<String>> queueConfigs = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(configFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (!line.isEmpty() && line.startsWith("#")) {
continue; // Skip comments
}
String[] parts = line.split(":", 2);
if (parts.length == 2) {
String queueName = parts[0].trim();
String resourcesStr = parts[1].trim();
List<String> resources = new ArrayList<>();
for (String resource : resourcesStr.split(",")) {
resources.add(resource.trim());
}
queueConfigs.put(queueName, resources);
}
}
}
return queueConfigs;
}
}
Add your comment