Sim*_*mon 6 amazon-web-services node.js amazon-sns
我刚刚开始使用 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
})
})
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我想让 X 个 Web 服务器侦听单个事件(扇出)。
例如,我的工作人员可能是私有子网上的 EC2 实例,因此可用订阅:“http(s)”、“email”、“sms”将不起作用**。“SQS”可以工作,但你必须为每个实例设置一个队列,它使用长轮询而不是推送。“应用程序”和“拉姆达”不适用。
AWS SNS 适合这个用例吗?如果没有,是否有替代的 AWS 服务?
** 您也许可以让 https 工作,但只能使用过于复杂的角色/dns。
编辑: 我认为我想做的类似于Google Cloud PubSub Subscription或RabbitMQ,但使用本机 (AWS) 而不是 3rd 方服务。
“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。
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |