Вам необходимо спроектировать всю среду с точки зрения событий, а не «временных интервалов», но да, это теоретически возможно.В качестве прокладки вы можете начать с процесса Кафки в Cron, который будет читать сообщения в течение настраиваемого промежутка времени, а затем обрабатывать этот фрагмент.
Что касается того, о чем вы просили, вы можете создать тему CDC / журнал изменений для событий базы данных (если вы делаете эту тему компактной, вы устраняете необходимость в ежедневном резервном копировании, поскольку каждое событие базы данных является постоянным вКафка с самого начала истории вашей БД - посмотрите на проект Debezium в качестве отправной точки), и вы можете получить соответствующие emails
или sms
темы, которые ваши потребители опрашивают и запускают из сообщений SMTP, SMS или GCM / APN.как вы, вероятно, уже делаете, если это система, с которой вы переходите.
Ничто из этого не обязательно должно быть также в PHP (или в действительности Kafka над другой системой pub-sub).Я бы умолял вас рассмотреть подход, основанный на микросервисах, который использует клиентскую библиотеку и технологию, наиболее подходящую для ваших случаев использования.Например, AWS может интегрировать Kinesis + SNS + SES, и у вас есть эквивалентное решение Kafka + SMS + Email без инфраструктуры для обслуживания.
Однако, прежде чем идти по этому пути, вам нужно прекратить группировать данные в срезы для обработки Cron, и скорее публиковать данные событие за событием и выполнять непрерывные, по мере необходимости, агрегации понекоторые окна времени