我刚刚开始使用SNS,据我所知,您不能简单地订阅发布者并收听事件。你必须我)。创建可公开访问的回调(url / email / sms),ii)。在服务中注册它,并且iii)。建立特定于回调类型的使用者。
我想使用类似于以下的API:
const client = new SnsClient({
region: 'eu-west-1',
topicArn: 'XXX'
})
client.on('connection', (connection) => {
connection.on('notification', (notification) => {
// do some work with notification
})
})
我想念什么吗?我想让X台Web服务器监听单个事件(扇出)。
例如,我的工作人员可能是私有子网中的EC2实例,因此可用的订阅:“ http(s)”,“ email”,“ sms”将不起作用**。“ SQS”可以工作,但是您必须为每个实例设置一个队列,并且它使用长轮询而不是推送。“应用程序”和“ lambda”不适用。
AWS SNS是否适合此用例?如果没有,还有其他AWS服务吗?
**您也许可以使https起作用,但只能使用过于复杂的角色/ dns。
编辑:我想我想做的类似于Google Cloud PubSub Subscription或RabbitMQ,但是使用本机(AWS)而不是第三方服务。
“ SQS”可以工作,但是您必须为每个实例设置一个队列,并且它使用长轮询而不是推送。
SQS正是在AWS中实现您所描述的方式。SNS不支持某种connection.on('notification',...
操作方式,但这实际上就是SQS长轮询的工作方式。
不要被“长期投票”一词所迷惑。是的,从技术上讲就是这样,但这实际上是在长轮询中进行的合法推送操作-例如,如果您对一个空队列进行20秒长轮询需要5秒,则到达的下一条消息将立即使您的长时间轮询返回该一条消息。现在。再过15秒。即使您要求更多,您也不会坐下来等待更多。长轮询本质上是SQS中的推包器。
请注意,您不必一定先定义扇出队列。每个侦听器都可以为其自己创建一个队列,将该队列订阅到该主题,然后开始侦听。
或者... AWS IoT中有消息代理。有人可能会说这与应用程序有些不合常规,但似乎支持一个主题的多个订户。
消息代理维护所有客户端会话以及每个会话的订阅的列表。在主题上发布消息时,代理将检查带有映射到该主题的订阅的会话。然后,代理将发布消息转发到具有当前连接的客户端的所有会话。
http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html
它同时支持基于TCP的MQTT和基于Web套接字的MQTT,在两种情况下均支持TLS。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句