Думаю логично для подписок использовать модель pubsub в любой реализации.
И соответственно делать рассылку сразу после создания каждого объявления.
Точнее добавлять объявления в некий пул для рассылки, и как только наберется N количество, отправлять рассылку.
- Создается объявление
- Попадает в очередь для парсинга
- Парсер вычленяет из объявления ключевые слова по базе подписок.
- Если ключевые слова находятся, то объявление отправляется в соответствующие каналы(пулы) для рассылки
- После того как пул набирает N количество объявлений - делается рассылка.
В итоге должно получиться что-то вроде того что нужно.
"Продам гараж в Москве, белый"
Парсер нашел: москва, белый гараж
Объявление попало в каналы: москва, белый гараж.
И после того как наберутся остальные объявления либо когда пройдёт N времени, очередь рассылается подписчикам этих двух каналов и очищается.