как предотвратить опрос дублированных данных из базы данных MySQL - PullRequest
0 голосов
/ 28 апреля 2019

У меня большой объем данных в базе данных MySQL. Я хочу опрашивать данные из базы данных и помещать их в activemq на верблюде соединение между базой данных и очередью будет потеряно каждые 15 минут. некоторые сообщения теряются во время прерывания соединения. Мне нужно знать, какие сообщения теряются, чтобы снова опросить их из базы данных. сообщения не следует отправлять более одного раза. и это должно быть сделано без каких-либо изменений в схеме базы данных. (Я не могу добавить любое поле логического состояния в мою базу данных).

приветствуется любое предложение.

1 Ответ

1 голос
/ 29 апреля 2019

По сути, вам нужно иметь некоторый уникальный идентификатор в данных, которые вы извлекаете из исходной базы данных. Может быть, это то, что уже было определено как первичный ключ. Или, может быть, в таблице есть поле для отметки времени. Или, может быть, какая-то комбинация полей будет уникальной.

Как только вы определите это, когда вы помещаете данные в цель, отклоните любой ключ, который уже находится в цели. Вы можете использовать функции «идемпотентности» Кэмела, но если вам удастся проверить ключ в целевой базе данных, вам, вероятно, больше ничего не понадобится.

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

Это необходимо сделать, даже если соединение не прерывалось каждые 15 минут ... потому что у вас могут быть сбои по другим причинам.

Если у вас может быть база данных Idempotency для Приложения № 1, другой подход может состоять в том, чтобы перенести данные из локальной базы данных в какую-то другую локальную таблицу и прочитать из нее. Затем вы опрашиваете эту другую таблицу и удаляете каждый раз, когда отправка прошла успешно. Пример:

Похоже, вы используете MySql. Если обе базы данных находятся на MySql, вы можете изучить MySql-репликацию данных , а не использовать свое собственное приложение с Camel.

...