У меня вопрос, должно ли количество разделов в топи c быть равно количеству различных ключей во входящих данных.
Не думаю, что это в общем хорошая идея. Это полностью зависит от данных, которые вы обрабатываете. Если у вас есть фиксированное количество ключей (таких как женские, мужские и разные), это может иметь смысл. Однако даже тогда вы должны быть осторожны, так как это может привести к дисбалансу нагрузки данных на брокера, поскольку они могут быть менее разнообразными. Таким образом, вы можете получить большую часть данных в одном разделе, тогда как другие разделы останутся пустыми. В целом, количество разделов должно быть скорректировано в соответствии с вашими требованиями к пропускной способности.
Следовательно, если количество разделов не равно количеству различных ключей в данных, мы можем иметь данные, имеющие разные ключи в тот же раздел? В этом случае, как сохраняется порядок данных?
Да, у вас может быть другой ключ в одном разделе. Затем упорядочение сохраняется для этого конкретного раздела, но не гарантируется в общем топи c. Предположим, у вас есть ключи A, B и C и топи c с двумя разделами. A и C переходят в первый раздел, а B сохраняется во втором разделе. Если данные текут так: A / V1, A / V2, B / V1, C / V1, B / V2
, тогда ваши разделы будут заполнены так:
- раздел 0: A / V1, A / V2, C / V1
- раздел 1: B / V1, B / V2
При использовании этой топи c неясно, как порядок между сообщениями A и C относится к сообщениям B. Однако всегда гарантируется, что сообщение A / V1 будет использовано до A / V2, A / V2 до C / V1 и B / V1 до B / V2.
Если вы ищете более гибкий Для направления ваших сообщений в разделы вы также можете написать пользовательский разделитель .