Как захватить сохранить или обновить события в Couchbase - PullRequest
0 голосов
/ 17 октября 2018

Я хотел бы иметь возможность выполнять некоторые манипуляции с данными, когда документы обновляются или создаются в Couchbase.

Документы могут поступать в нашу базу данных либо через Sync Gateway, либо через наш собственный код, который передает данные из httpоказание услуг.Было бы здорово иметь одно место, где я могу перехватить все обновления.

Мы запускаем REST API Spring Boot для этих данных, так что это было бы хорошим местом для перехватчика / прослушивателя.В любом случае, я бы предпочел решение Java.

Данные пишутся как JSON, а не с использованием сущностей Spring, поэтому я не могу использовать ApplicationListener, который только прослушивает события в классах Entity.Поправьте меня если я ошибаюсь.Я могу найти несколько примеров настройки ApplicationListeners, поэтому я могу ошибаться, но я не могу заставить его работать.

Я вижу, что есть служба Eventing, где вы пишете Javascript, но для рядаПричины, по которым я не хочу идти по этому пути.Я не заинтересован в фрагментации нашего кода API между платформами и языками, не уверен, что смогу запустить службу обработки событий в наших системах и т. Д. Опять же, я открыт для дискуссий.

Это оставляет DCP только настолько далекокак я могу сказать, что кажется очень низким уровнем.https://blog.couchbase.com/couchbases-history-everything-dcp/, но выглядит как инструмент для работы.

ВОПРОС: Существует ли альтернативный, менее низкий уровень, способ отлавливать события обновления в Couchbase для объектов JSON, а не для сущностей, отличных от DCP.

1 Ответ

0 голосов
/ 17 октября 2018

Отказ от ответственности: я работаю в Couchbase и разрабатываю клиент Java DCP.

Если вы уже оценили службу Eventing и решили, что она не соответствует вашим требованиям, клиент Java DCP возможно, стоит посмотреть, даже если он не официально не поддерживается.Он используется официальными коннекторами Couchbase для Kafka, Spark и Elasticsearch (все они с открытым исходным кодом) и активно поддерживается.

Если вы заботитесь только о событиях, которые произошли с момента запуска вашего приложения, использование может бытьпросто регистрация обратного вызова и запуск потока событий .Все становится немного сложнее, если вам нужно запомнить свое место в потоке и возобновить его позже (например, для обработки событий, которые произошли, когда вы были в автономном режиме), но для этого случая есть пример кода .

Сам протокол DCP хорошо документирован .Если вы решите пойти по этому пути, было бы неплохо прочитать хотя бы раздел Architecture этой документации.Также имейте в виду, что, поскольку клиент Java DCP не поддерживается, API может быть изменен без уведомления.(Официальная поддержка библиотеки и предоставление более дружественного API - одна из наших долгосрочных целей, но мы еще ни к чему не привержены.)

...