Для этого вы можете использовать kafkacat
с его оператором -D
для указания пользовательского разделителя сообщений (в данном примере /
):
kafkacat -b kafka:29092 \
-t test_topic_01 \
-D/ \
-P <<EOF
this is a string message
with a line break/this is
another message with two
line breaks!
EOF
Обратите внимание, что разделитель должен быть одним байтом - многобайтовые символы в конечном итоге будут включены в получающееся сообщение См. Проблему # 140
Результирующие сообщения, проверенные также с использованием kafkacat:
$ kafkacat -b kafka:29092 -C \
-f '\nKey (%K bytes): %k\t\nValue (%S bytes): %s\n\Partition: %p\tOffset: %o\n--\n' \
-t test_topic_01
Key (-1 bytes):
Value (43 bytes): this is a string message
with a line break
Partition: 0 Offset: 0
--
Key (-1 bytes):
Value (48 bytes): this is
another message with two
line breaks!
Partition: 0 Offset: 1
--
% Reached end of topic test_topic_01 [0] at offset 2
Проверка с использованием kafka-console-consumer
:
$ kafka-console-consumer \
--bootstrap-server kafka:29092 \
--topic test_topic_01 \
--from-beginning
this is a string message
with a line break
this is
another message with two
line breaks!
(, иллюстрирующая, почему с kafkacat
приятнее работать, чем с kafka-console-consumer
из-за его дополнительной детализации:) )