Мне нравится второе предлагаемое решение (промежуточный уровень), так как оно отделяет уведомление от работы с базой данных и может быть частью транзакции XA двухфазного принятия.Если потребителям нужен контент базы данных в дополнение к уведомлению, это можно сделать с помощью репликации MySQL.Это также может решить вопрос связывания, поскольку компоненты-потребители могут иметь доступ только для чтения к своим реплицированным экземплярам.
Использование решения для обмена сообщениями также устранит любые потенциальные узкие места в решении только для базы данных, поскольку оно будетуведомление и хранение в отдельных процессах.
В зависимости от языка, у вас есть несколько вариантов распространения сообщений.Если вы используете Java, я бы порекомендовал JGroups , а не JMS, так как это несколько проще в настройке.
Если Java не является вашим предпочтительным языком, Apache Active MQ поддерживает несколько языков для взаимодействия.Apache Qpid - это реализация AMQP, которая также поддерживает ряд языков (Java, C ++, Python, Ruby и т. Д.)