#postgresql #debezium #debezium-engine
Вопрос:
Я использую Debezium с разъемом Postgres. До сих пор все работает нормально, когда я могу обновить таблицу (например, таблицу списков), и я могу просмотреть сообщение в соответствующей теме Кафки.
Вот пример сообщения Debezium:
{ «до»:null, «после»:{ «идентификатор»:»1″, «имя»:»мой список», «Идентификатор пользователя»:3 }, «источник»:{ «версия»:»1.6.1.Окончательный», «соединитель»:»postgresql», «имя»:»база данных my_local_database», «ts_ms»:1633012051674, «снимок»:»ложь», «бд»:»test_db», «последовательность»:»[«30001968632″,»30001968632″]», «схема»:»sch», «таблица»:»список», «txId»:2237, «lsn»:30001969096, «xmin»:null }, «op»:»u», «ts_ms»:1633012051737, «транзакция»:null }
У меня есть таблица списков, которая имеет отношение «один ко многим» с элементом (т. Е. В одном списке может быть несколько элементов). Приложение, использующее эту базу данных, является приложением Java, а объект списка имеет форму POJO:
public class List {
private List<Item>;
...
...
Я хотел бы, чтобы, если в таблице элементов есть обновление, я хотел бы, чтобы Debezium отправил мне сообщение, содержащее обновленные данные элемента вместе с данными моего списка внутри сообщения (поскольку это отношение «один ко многим»).
Я понимаю, что мне нужно будет добавить таблицу «элемент» в конфигурацию соединителя, и Debezium автоматически создаст тему для прослушивания изменений элементов, для чего я бы написал логику Java, чтобы обновить свой объект списка выше с помощью обновленного элемента. Мне было интересно, есть ли у Debezium какой-либо способ обнаружения изменений в связанных таблицах (например, Элемент) в той же теме (например, тема списка) или он может обнаруживать изменения только в самой основной таблице (т. Е. Только в таблице элементов)? Меня интересовало только количество потребителей, которых мне пришлось бы создать, если бы у меня было, скажем, 10-20 таблиц с отношениями от одного до многих.