Как подписаться/отписаться от каждого сервера в группе автоматического масштабирования на SNS

Мы используем Elastic Beanstalk для обслуживания REST API. Теперь я хочу разработать конечную точку, которая асинхронно обслуживает уведомления из темы SNS.

Чтобы получать эти уведомления, мне нужно подписаться на API-серверы на SNS-тему. Как мне это сделать, имея в виду сценарий, когда приложение EBS может масштабироваться до нескольких серверов и снова уменьшаться? Я не хочу, чтобы на SNS-тему было подписано много мертвых ссылок...


person Pepster    schedule 10.02.2015    source источник


Ответы (2)


В весеннем мире у нас есть @PostConstruct, который вызывается при запуске сервера, где вы можете подписаться URL-адресом «this.server» на заданную тему (вам может потребоваться создать правильный рабочий URL-адрес подписки — с помощью InetAddress и др.).

Следовательно, существует рабочий URL-адрес подписки с использованием @RestController, который подтверждает, что такая подписка мгновенно приводит к регистрации конечной точки sns. Любые новые серверы будут делать то же самое, то есть сами будут регистрироваться (при создании нового стека). Нам также нужен дополнительный код для последующего использования сообщений уведомлений и что-то делать, когда подтвержденные конечные точки подписки получают их.

person shivarajan    schedule 21.04.2015

То, как AWS хочет, чтобы вы использовали SNS, не заключалось в прямой подписке на него. Любое уведомление, которое должно инициировать что-то в компоненте, должно буферизовать уведомления с очередью SQS. По этой причине мы решили сделать Pub-Sub с переменной/масштабируемой группой подписок, используя дистрибутив Redis, управляемый Amazon.

person Pepster    schedule 22.04.2015