Как да се абонирате/отпишете всеки сървър в група с автоматично мащабиране за 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 с променлива/мащабируема група от Subs, използвайки дистрибуцията Redis, управлявана от Amazon.

person Pepster    schedule 22.04.2015