List<Partition> configPartitions = this.getConfigPartitions(topic);
int configPartitionsNum = configPartitions.size();
// ˳����Ϣû�����ù�����������Ϣ,���÷���Ϣ
if (configPartitionsNum == 0) {
throw new MetaClientException("There is no config partitions for topic " + topic
+ ",maybe you don't config it at first?");
}
Partition selectedPartition = this.choosePartition(topic, configPartitions, message);
if (selectedPartition == null) {
throw new MetaClientException("selected null partition");
}
// ���÷�����Ϊ0,����˳����Ϣ��Ϊ����ʱû�п��÷���(����ֻ��һ̨������,������������),����Ϊ��û����topic,
// ������Ϣд���ػ���
if (availablePartitionNum == 0) {
throw new AvailablePartitionNumException("selected partition[" + selectedPartition + "]for topic[" + topic
+ "]can not write now");
}
// ���÷��������÷�����������ѡ�����ķ���,(�������û������,�׳��쳣�û��Լ�����)
if (!configPartitions.contains(selectedPartition) && !partitions.contains(selectedPartition)) {
throw new MetaClientException("invalid selected partition:" + selectedPartition
+ ",config and availabe paritions not contains it");
}
// ���÷��������÷���������ѡ�����ķ���ʱ�ſ�д
if (configPartitions.contains(selectedPartition) && partitions.contains(selectedPartition)) {