protected static MessageIdImpl parseMessageIdString(String config) {
        String[] tokens = config.split(":", 3);
        checkArgument(tokens.length == 3, "MessageId format must be ledgerId:entryId:partitionId.");

        try {
            long ledgerId = Long.parseLong(tokens[0]);
            long entryId = Long.parseLong(tokens[1]);
            int partitionId = Integer.parseInt(tokens[2]);
            return new MessageIdImpl(ledgerId, entryId, partitionId);
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException(
                    "MessageId format must be ledgerId:entryId:partitionId. "
                            + "Each id should be able to parsed to long type.");
        }
    }
Creates an array of indices that determine which physical fields of the table schema to
include in the key format and the order that those fields have in the key format.
inlong-sort/sort-flink/sort-flink-v1.18/sort-connectors/pulsar/src/main/java/org/apache/inlong/sort/pulsar/table/PulsarTableOptionUtils.java