Я в процессе миграции монолита на основе ACID на микросервисную архитектуру на основе событий. В монолите потенциально большие файлы хранятся в базе данных, и я хочу поделиться этой информацией (включая содержимое файла) с микросервисами.
Мой подход заключается в том, чтобы разбить файл на пронумерованные блоки и отправить несколько сообщений (например, 1 FileCreatedMessage
с метаданными и идентификатором, за которым следует n
FileContentMessage
, содержащий блок и его порядковый номер). На принимающей стороне сообщения могут поступать не по порядку. Поэтому я буду хранить блоки из сообщений, заказывать их, объединять и сохранять результат.
Существует ли какой-либо подход, который позволяет мне передавать данные через Kafka с тем или иным сообщением без дополнительных затрат на реализацию логики разделения, упорядочения и объединения для нескольких сообщений?
Я заметил Kafka Streams. Кажется, он решает другие проблемы, чем этот.