当前位置: 首页 > 知识库问答 >
问题:

Amazon SNS到SQS-使用.NET SDK确认订阅

常永怡
2023-03-14

我正在尝试设置Amazon Ses通知到我的SQS队列。我正在遵循如何创建SQS队列,然后是SNS主题,并将一个订阅到另一个。

但是,在管理控制台中,订阅出现“挂起确认”。

我使用的是.NET AWS SDK,如何确认订阅?或者更好,为什么我要确认?文件上说

    private static string CreateBounceTopicAndQueue(IAmazonSQS sqsClient, IAmazonSimpleNotificationService snsClient)
    {
        // 1. Create an Amazon SQS queue named ses-bounces-queue.
        CreateQueueResponse createQueueResponse = sqsClient.CreateQueue(new CreateQueueRequest()
        {
            QueueName = AppGlobal.SesBouncesQueue,
            Attributes = new Dictionary<string, string>() {
                { "ReceiveMessageWaitTimeSeconds", "20" }
            }
        });
        string queueUrl = createQueueResponse.QueueUrl;

        // 2. Create an Amazon SNS topic named ses-bounces-topic
        CreateTopicResponse createTopicResponse = snsClient.CreateTopic(new CreateTopicRequest
        {
            Name = AppGlobal.SesBouncesTopic
        });
        string topicArn = createTopicResponse.TopicArn;

        // 3. Configure the Amazon SNS topic to publish to the SQS queue
        var response =  snsClient.Subscribe(new SubscribeRequest
        {
            TopicArn = topicArn,
            Endpoint = queueUrl,
            Protocol = "https"
        });

        return queueUrl;
    }

共有1个答案

饶承宣
2023-03-14

您不需要通过使用队列URL创建https订阅来将SQS队列订阅到SNS主题。

您创建一个“SQS”(不是https)协议订阅,将队列的ARN(不是webendpoint)作为endpoint。

protocol
Type: System.String
The protocol you want to use. 
...
sqs -- delivery of JSON-encoded message to an Amazon SQS queue
endpoint
Type: System.String
The endpoint that you want to receive notifications. Endpoints vary by protocol...

For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue

http://docs.aws.amazon.com/sdkfornet/latest/apidocs/items/msns_snssubscribe_string_string_string_stringnet4_5.html

 类似资料:
  • 我的Sring引导应用程序监听Amazon SQS队列。现在,我需要实现正确的消息确认--我需要接收一条消息,做一些业务逻辑,只有在此之后,如果成功,我需要ack消息(从队列中删除消息)。例如,如果我的业务逻辑出现错误,消息必须重新排队。 现在我不知道如何从我的听众那里获取信息。

  • 请求地址 http://api.dc78.cn/Api/do_confirm 请求方式 POST 请求参数 GET参数 参数名称 必填 描述 范例 id 订单号 state 状态 2->下单成功,-1->下单失败 ,6->订单已配送,10->订单已完成(6,10只针对外卖订单) bzid 业务单号 作为关联备查 table 桌台号 (可选),用于在外卖等场景下使用默认桌台号情况下,门店下单后返回一

  • 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 do_confirm string get GET参数组,本组参数需要参与签名 是 object └id 订单号 是 47302320 number └state 状态(2->下单成功,-1->下单失败 ,6->订单已配送,10->订单已完成(6,10只针对外

  • 是否有一种方法可以使用AWS CLI列出特定SQS队列订阅的所有AWS SNS主题? 我已经知道如何看到一个SNS主题上的订阅者列表,但这只有在我知道SNS主题的名称时才起作用。在这种情况下,我只知道SQS队列的名称。 我在网上搜索什么也找不到。

  • 说明 此协议用于在客户端中完成订单(点菜单与外卖单)确认功能,(2015-05-04增加) 请求地址 http://api.dc78.cn/Api/do_confirm_new 请求方式 POST 请求参数 参数 参数名称 必填 描述 范例 id 订单号 state 状态 1:确认成功,-1取消订单 POST参数 参数名称 必填 描述 范例 table 订单关联桌台 op 操作员姓名 返回 {"s

  • 接收到do-new推送后,确认一个预订单 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 bk_state string get GET参数组,本组参数需要参与签名 是 object └id 预订单id 是 8601458771 number └state 预订状态,1=预订成功,-1=预订失败 是 1 n