gpt4 book ai didi

node.js - 是否可以在不使用公共(public)回调的情况下收听 AWS SNS 通知?

转载 作者:搜寻专家 更新时间:2023-10-31 23:11:06 26 4
gpt4 key购买 nike

我刚刚开始使用 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 服务器监听单个事件(扇出)。

例如,我的工作人员可能是私有(private)子网上的 EC2 实例,因此可用的订阅:“http(s)”、“email”、“sms”将不起作用**。 “SQS”可以工作,但你必须为每个实例设置一个队列,它使用长轮询而不是推送。 “应用程序”和“lambda”不适用。

AWS SNS 是否适合此用例?如果没有,是否有替代 AWS 服务?

** 您或许可以使用 https,但只能使用过于复杂的角色/dns。

编辑:我想我想做的类似于 Google Cloud PubSub SubscriptionRabbitMQ但使用 native (AWS) 而不是第 3 方服务。

最佳答案

"SQS" could work but you have to set a queue up for each instance and it uses long polling rather than push.

SQS 正是在 AWS 中实现您所描述内容的方式。 SNS 不支持 connection.on('notification',... 操作风格,但这正是 SQS 长轮询在实践中的工作方式。

不要被“长轮询”这个词弄糊涂了。是的,从技术上讲就是这样,但它是在长轮询中发生的非常合法的推送操作——如果你在 5 秒内进入针对空队列的 20 秒长轮询,下一条到达的消息将立即使您的长轮询返回一条消息。现在。不会再过 15 秒。你不会坐在那里等待更多,即使你要求更多。长轮询本质上是 SQS 中的推送包装器。

请注意,您不必预先定义扇出队列。每个监听器都可以为自己创建一个队列,将队列订阅到主题,然后开始监听。

或者... AWS IoT 中有消息代理。有人可能会说这是一个有点反常的应用程序,但它似乎支持一个主题的多个订阅者。

The message broker maintains a list of all client sessions and the subscriptions for each session. When a message is published on a topic, the broker checks for sessions with subscriptions that map to the topic. The broker then forwards the publish message to all sessions that have a currently connected client.

http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html

它支持基于 TCP 的 MQTT 和基于 Web 套接字的 MQTT,在这两种情况下都使用 TLS。

关于node.js - 是否可以在不使用公共(public)回调的情况下收听 AWS SNS 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com