You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS SDK for Java V2批量发布SNS消息?求可用示例

AWS SDK 2.X 批量向SNS发布消息示例

以下是AWS SDK 2.X版本的批量发布SNS消息实现,对应你提供的1.X版本逻辑:

import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class SnsBatchPublishExample {
    private static final int MAX_BATCH_SIZE = 10; // SNS批量发布单批次上限为10条
    private static final String OUTPUT_TOPIC = "你的SNS Topic ARN";

    public static void main(String[] args) {
        // 初始化SNS客户端(SDK 2.X推荐用try-with-resources自动管理客户端生命周期)
        try (SnsClient snsClient = SnsClient.create()) {
            // 模拟消息payload列表
            List<String> payload = IntStream.range(0, MAX_BATCH_SIZE)
                    .mapToObj(i -> "测试消息 " + i)
                    .collect(Collectors.toList());

            // 构建批量请求条目
            List<PublishBatchRequestEntry> entries = IntStream.range(0, MAX_BATCH_SIZE)
                    .mapToObj(i -> PublishBatchRequestEntry.builder()
                            .id("id" + i)
                            .message(payload.get(i))
                            .build())
                    .collect(Collectors.toList());

            // 构建批量发布请求
            PublishBatchRequest request = PublishBatchRequest.builder()
                    .topicArn(OUTPUT_TOPIC)
                    .publishBatchRequestEntries(entries)
                    .build();

            // 执行批量发布
            PublishBatchResponse response = snsClient.publishBatch(request);

            // 处理成功发送的消息
            response.successful().forEach(entry -> {
                System.out.println("成功消息的批量ID: " + entry.id());
                System.out.println("成功消息的Message ID: " + entry.messageId());
            });

            // 处理发送失败的消息
            response.failed().forEach(errorEntry -> {
                System.out.println("失败消息的批量ID: " + errorEntry.id());
                System.out.println("错误代码: " + errorEntry.code());
                System.out.println("是否为发送方错误: " + errorEntry.senderFault());
                System.out.println("错误信息: " + errorEntry.message());
            });
        } catch (SnsException e) {
            System.err.println("批量发布请求失败: " + e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}

与1.X版本的关键差异

  • SDK 2.X 使用**构建器模式(Builder)**替代1.X的withXXX()链式调用,所有请求对象和条目都通过builder()创建并调用build()生成实例
  • 客户端推荐使用try-with-resources语法自动关闭,无需手动管理资源释放
  • 返回结果的属性获取从getXXX()改为直接调用属性方法(如successful()替代getSuccessful())
  • 异常处理使用SnsException捕获,可通过awsErrorDetails()获取更详细的AWS错误信息

注意事项

  • SNS批量发布单批次最多支持10条消息,超出该数量需手动拆分批次处理
  • 确保当前AWS账号拥有sns:PublishBatch操作权限
  • 检查Topic ARN是否正确、消息内容是否符合SNS规范(如单条消息大小不超过256KB)

内容的提问来源于stack exchange,提问作者user17126841

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:23:08