Amazon SNS 消息发布 - Amazon Simple Notification Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS 消息发布

创建 Amazon SNS 主题并向该主题订阅终端节点后,您可以将消息发布到该主题。发布消息时,Amazon SNS 尝试将消息传输到订阅的终端节点。终端节点可以是 AWS Lambda 函数、Amazon Simple Queue Service (Amazon SQS) 队列、HTTP(S) 终端节点或电子邮件地址。

重要

您只能将消息发布到同一 AWS 区域中的主题和终端节点。

使用 Amazon SNS将消息发布到 AWS 管理控制台 主题

  1. 登录到 Amazon SNS 控制台

  2. 在左侧导航窗格中,选择主题

  3. Topics (主题) 页面上,选择一个主题,然后选择 Publish message (发布消息)

    控制台将打开 Publish message to topic (将消息发布到主题) 页面。

  4. Message details (消息详细信息) 部分中,执行以下操作:

    1. (可选)输入消息 Subject (主题)

    2. 对于 FIFO topic (FIFO 主题),输入 Message group ID (消息组 ID)。同一消息组中的消息按其发布顺序传送。

    3. 对于 FIFO 主题,输入 Message deduct ID (消息重复数据删除 ID)。如果您为主题启用了基于内容的消息重复数据删除设置,则该 ID 是可选的。

    4. (可选)对于 mobile push notifications (移动推送通知),输入 Time to Live (TTL) (生存时间 (TTL)) 值(以秒为单位)。这是推送通知服务—(如 Apple Push Notification Service (APN) 或 Firebase Cloud Messaging (FCM))—将消息传送到终端节点所具有的时间。

  5. Message body (消息正文) 部分中,执行以下操作之一:

    1. 选择 Identical payload for all delivery protocols (完全相同负载用于所有传输协议),然后输入消息。

    2. 选择 Custom payload for each delivery protocol (每个传输协议的自定义负载),然后输入一个 JSON 对象以定义要为每个传输协议发送的消息。

      有关更多信息,请参阅使用平台特定负载发布

  6. Message attributes (消息属性) 部分中,添加您希望 Amazon SNS 与订阅属性 FilterPolicy 相匹配的任何属性,以确定订阅的终端节点是否对发布的消息感兴趣。

    1. 对于 Type (类型),选择属性类型,例如 String.Array

      注意

      对于属性类型 String.Array,请将数组用方括号 ([]) 括起来。在该数组内,将字符串值加入双引号内。数字以及关键字 truefalsenull 无需加引号。

    2. 输入属性 Name (名称),例如 customer_interests

    3. 输入属性 Value (值),例如 ["soccer", "rugby", "hockey"]

    如果属性类型是 StringString.ArrayNumber,Amazon SNS 会首先根据订阅的筛选策略(如果存在)来评估消息属性,然后再将消息发送至订阅。

    有关更多信息,请参阅Amazon SNS 消息属性

  7. 选择发布消息

    消息将发布到主题,控制台将打开主题的 Details (详细信息) 页面。

使用 AWS SDK for Java将消息发布到 Amazon SNS 主题

  1. 指定您的 AWS 凭证。有关更多信息,请参阅 适用于 Java 的 AWS 开发工具包 2.x 开发人员指南 中的设置用于开发的 AWS 凭证和区域

  2. 编写您的代码。有关更多信息,请参阅使用 适用于 Java 的开发工具包 2.x

    以下代码摘录将消息发布到主题,然后打印 MessageId

    // Publish a message to an Amazon SNS topic. final String msg = "If you receive this message, publishing a message to an Amazon SNS topic works."; final PublishRequest publishRequest = new PublishRequest(topicArn, msg); final PublishResult publishResponse = snsClient.publish(publishRequest); // Print the MessageId of the message. System.out.println("MessageId: " + publishResponse.getMessageId());
  3. 编译并运行您的代码。

    消息已发布并且已打印 MessageId,例如:

    MessageId: 1234a567-bc89-012d-3e45-6fg7h890123i

有关如何使用 AWS SDK for Java 创建和发布 FIFO 主题的详细示例,请参阅使用 适用于 Java 的 AWS 开发工具包 2.x

使用 适用于 .NET 的 AWS 开发工具包将消息发布到 Amazon SNS 主题

  1. 指定您的 AWS 凭证。有关更多信息,请参阅 适用于 .NET 的 AWS 开发工具包 开发人员指南 中的配置 AWS 凭证

  2. 编写您的代码。有关更多信息,请参阅使用 适用于 .NET 的 AWS 开发工具包 进行编程

    以下代码摘录将消息发布到主题,然后打印 MessageId

    // Publish a message to an Amazon SNS topic. String msg = "If you receive this message, publishing a message to an Amazon SNS topic works."; PublishRequest publishRequest = new PublishRequest(topicArn, msg); PublishResponse publishResponse = snsClient.Publish(publishRequest); // Print the MessageId of the published message. Console.WriteLine("MessageId: " + publishResponse.MessageId);
  3. 编译并运行您的代码。

    消息已发布并且已打印 MessageId,例如:

    MessageId: 1234a567-bc89-012d-3e45-6fg7h890123i