У нас есть две системы, в которых система A отправляет данные в систему B. Требуется, чтобы каждая система могла работать независимо от другой и ни одна из них не взорвалась, если другая вышла из строя. Вопрос в том, как лучше всего взаимодействовать системе A с системой B при выполнении требования разделения.
Система B в настоящее время имеет процесс, который опрашивает данные в таблице базы данных и обрабатывает все новые строки, которые были вставлены.
Один из предложенных вариантов заключается в том, чтобы система A просто вставляла данные в таблицу db системы b, а система B обрабатывала новые строки существующим процессом. Вопрос в том, отвечает ли это решение требованию разделения двух систем? Считается ли база данных частью системы B, которая может стать недоступной и привести к взрыву системы A?
Другое решение состоит в том, чтобы система A помещала данные в очередь MQ и имела процесс, который считывал бы из MQ и затем вставлял в базу данных системы B. Но это только дополнительные расходы? В конечном итоге очередь MQ более отказоустойчива, чем таблица в БД?