Мы представляем SNS + SQS для обработки создания и распространения событий в нашей архитектуре микросервисов, которая до сих пор полагалась на вызовы HTTPS для связи друг с другом. Мы рассматриваем возможность подключения нескольких очередей SQS к одной теме SNS. Затем события в очередях будут обрабатываться лямбда-выражением или службой, работающей в EC2.
У меня вопрос: насколько общими должны быть темы? Когда нам следует создавать новые темы?
Скажем, у нас есть пользовательский домен, который должен публиковать два события - созданные и удаленные. Мы рассматриваем два варианта:
ВАРИАНТ A: Иметь две темы: «созданные пользователем» и «удаленные пользователем». Каждая тема гарантирует один тип события.
- потребителям не придется беспокоиться об отбрасывании событий, которые им не интересны, поскольку они уже знают, что сообщения, поступающие из темы, созданной пользователем, относятся только к творениям пользователей.
- публикация нескольких разных частей кода в одной теме
ВАРИАНТ Б: Создайте одну тему, "пользователи", которая принимает несколько типов событий.
потребители будут нести дополнительную ответственность за фильтрацию событий или выполнение различных действий в зависимости от типа события (они также могут настроить свои подписки на очереди для фильтрации определенных типов событий)
может обеспечить одного издателя для каждой темы
Кто-нибудь отдает предпочтение любому из вариантов и почему?
В связи с этим, где бы вы включили облачную конфигурацию для каждого из ресурсов? (следует ли развертывать создание ресурсов очереди вместе с потребителями или они должны работать независимо от любого из издателей / потребителей?)