如何为普通.NET控制台应用程序接收和处理来自AWS SNS的消息?

问题描述 投票:0回答:2

我尝试了几种方法并尝试在网上搜索一整天,但到目前为止没有任何效果。

我找到了 AWS SDK 示例,但它适用于 AWS SQS 而不是 SNS:链接

我想要做的与示例类似,但使用 .NET 控制台应用程序来:

  1. 向主题 A 发布消息
  2. 接收Topic A的消息并在控制台打印

我发现AWS指南有这个代码,但它是用Java编写的,我对Java一无所知。

任何人都可以帮忙解决如何做到这一点吗?我真的输了。谢谢你。

.net amazon-web-services amazon-sns
2个回答
0
投票

抱歉,这是对一个老问题的回答……但我在搜索中偶然发现了这一点,并认为值得为下一个这样做的人回答。

SNS本身是一种推送机制,意味着它需要主动寻找目标并向其推送通知。它不会保留您向其发布的消息 - 如果没有订阅者,则发布的消息将丢失。 为了发布消息,目标(在您的例子中是 .NET 控制台应用程序)需要以某种方式监听推送。这也意味着目标需要在互联网上公开可用,而大多数 .NET 控制台应用程序都不是......除非您将它们设置为侦听。

这里有两个主要选项(显然有一千种给牦牛剃毛的方法)。我来推荐一下吧

推荐方法

创建一个SQS队列来订阅SNS主题,然后消费该队列中的消息。

这种方法的好处是它非常容易设置,并且您将“监听”责任转移给 AWS。当您的消费者宕机时发布的消息不会丢失,因为 SQS 将保留它们。通过这种方式,SNS 和 SQS 可以很好地协同作用:SNS 接收有效负载并将其“扇出”给订阅者,SQS 订阅该 SNS 主题并保留消息直至其被使用。

其他方法

可以将控制台应用程序设置为HTTP侦听器(或类似的),并确保它正在侦听可公开访问的端口。对于大多数用例来说,这可能不是最好的主意,因为您需要打开防火墙,而且可能并不比让 SQS 队列为您处理这个问题更好。

但是,有很多库(例如 Nancy)可以将您的控制台应用程序转变为 HTTP 侦听器(有效地将其转变为 HTTP REST API),然后您只需配置 SNS 可以订阅的端点即可。

注意:我故意避免添加示例链接,因为这个特定问题的解决方案似乎是关于 SNS 工作原理的教育...对于这两种方法,都有足够的文档可以轻松访问


-1
投票

这里是一些使用 AWS SNS 和 .NET 的示例。 AWS 提供了大量有关 AWS 使用的示例。您可以从这里开始。

© www.soinside.com 2019 - 2024. All rights reserved.