Может ли Apache Kafka обрабатывать транзакции?
мы планируем использовать Kafka в качестве центрального компонента в нашем хранилище данных, учитывая, что производитель способен обрабатывать транзакции (короче: откаты и коммиты).
Когда googling Kafka + Transactions, я нахожу много теоретических соображений о возможности того, как Kafka может обрабатывать транзакции, но на данный момент я не вижу никакой функции в java API, который поддерживает фиксации и откаты для производителя.
Кто-нибудь сделал некоторые впечатления от транзакций и Кафки и может дать мне подсказку?
Ответы
Ответ 1
нет Нет; Kafka не поддерживает транзакции.
Вы можете убедиться, что сообщение было создано для раздела, но после его создания вы не можете отменить это сообщение.
Начиная с версии 0.11.0 Apache Kafka поддерживает транзакции: https://cwiki.apache.org/confluence/display/KAFKA/Transactional+Messaging+in+Kafka
Ответ 2
Фактически, из последней версии поддерживаются 0.11.0.0 транзакции. См. Гарантия уникальной глобальной транзакции для производителей Kafka
Ответ 3
Я думаю, что то, что вы ищете, в основном называется транзакционным обменом сообщениями в Kafka, где производители могут создавать сеанс (например, транзакционный сеанс) и отправлять сообщения в сеансах. Следовательно, он может выбрать либо совершить, либо прервать транзакцию.
[Источник]: Пожалуйста, прочитайте wiki для деталей