- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我刚刚开始使用 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 Subscription或 RabbitMQ但使用 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/
我有监听 unix 套接字的进程。但是,在我阅读之前,我想检查一些有关此传入消息的元数据,例如它的源进程(比如我想删除来自不受信任的发件人的消息)。是否有任何系统调用可以检索此信息。 if(l
我目前正在开发一个使用 Spring AMQP 和 RabbitMQ 的 Java 应用程序,我想监控我的队列并在某些事件发生时得到通知,比如 元素已添加到队列中, 元素被移除,或者 元素再次进入队列
我正在使用如下定义的 spring jms 监听器。它通常工作正常,但我看到它根据 recieveTimeout 设置不断断开连接和重新连接。
我如何在 Java 中监听原始打印机端口 9100。 当我在端口 9100 上创建 ServerSocket 并接受连接时,当我尝试打印到此端口时,没有任何反应。 System.out.println
问题在标题中,但要详细说明一下。如果我使用 Sun/Oracle NIO API 或类似 Netty 的框架在 Java 中编写 NIO 应用程序,是否可以让客户端作为订阅者“连接”,即使没有服务器绑
我需要收听来自 UDP 的网络广播。数据报包含一个 j4cDAC_broadcast 结构。我尝试按照一些教程进行操作,但它们似乎遗漏了一些内容并且没有非常详细的解释(如果有的话)。 我现在得到的是错
我目前正在通过带有参数的拨号协议(protocol)启动 Amazon FireTV 应用程序。可以通过这样的 Intent 在 onCreate() 中访问此参数: Intent intent =
我想听游标的任何变化。是否可以在不使用 android 中的 contentprovider 的情况下实现这一目标? 注意:(我没有使用任何数据适配器) 谢谢 最佳答案 我发现你不需要使用内容提供者。
我想在 Linux 上使用 C 中的 Libpcap 编写一个小型应用程序。 目前,它开始嗅探并等待数据包。但这并不是我真正需要的。我希望它等待 N 秒然后停止收听。 我怎样才能做到这一点? 这是我的
如何在用户关闭 Modal Bottom Sheet 时执行一段代码? showModalBottomSheet( context: context, buil
我如何在 B 类中监听来自 A 类的 PropertyChanged 事件?我想听听 A 类的属性变化。 class A : INotifyPropertyChanged { priv
当新 Activity 开始或android中的任何任务时,有没有办法通过广播或任何其他方式接收事件? 谢谢马哈茂德 最佳答案 您想做什么,一些分析或日志记录或其他什么? 好吧,如果您要监控的是您自己
我在 SWT 事件方面遇到了困难。 有没有办法在 Combo 关闭时收到通知?我需要知道它何时关闭并且选择没有更改。 我注意到有一个事件类型 SWT.Collapse,但据我所知,这只适用于 Tree
我有一个套接字,我正在尝试从客户端向服务器发送信息。两者位于同一网络,具有不同的 LAN IP(如下所示): 我的服务器是我的 C# 应用程序。 - 192.168.0.2我的客户端是我的 Andro
我是 Gstreamer 的新手,我想用它来收听 RTP 流。 为此,我使用此管道: gst-launch-1.0 udpsrc caps=application/x-rtp port=5000 !
我有一个包含大量所有级别日志记录的应用程序。我希望向 Log.Fatal 调用添加一些自定义行为。如果不构建自定义 Appender 是否可以做到这一点? 我试过这个: log4net.Uti
我有我的 android 应用程序,它监听浏览器 Intent ,以便在用户单击某种类型的 URI 时捕获它们。更具体地说,我希望我的应用程序在用户单击指向 torrent 文件的超链接(例如 htt
我想做的是以下内容:一个服务,持续监听 gps(是的:JUST gps)位置更新而不主动请求它们 - 即这个应用程序不应该消耗额外的资源电池生命周期或 CPU 时间,直到其他应用程序请求/接收 GPS
我有一个 Bootstrap 5 accordion看起来像这样: Bar ... 我正
我是 tweepy 的新手。并尝试实现一个 API,它可以监听新推文中的@提及或屏幕名称。 tweets = api.user_timeline(screen_name=username) 但它没有收
我是一名优秀的程序员,十分优秀!