我假設ListTopicsResult只會返回話題的話題ARNS您可以訪問。
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sns.model.ListTopicsRequest;
import com.amazonaws.services.sns.model.ListTopicsResult;
import com.amazonaws.services.sns.model.Topic;
public class TestSNS {
public static void main(String[] args) {
AWSCredentials credentials = new BasicAWSCredentials(args[0], args[1]);
AmazonSNSClient snsClient = new AmazonSNSClient(credentials);
ListTopicsResult listTopicsResult = snsClient.listTopics();
String nextToken = listTopicsResult.getNextToken();
List<Topic> topics = listTopicsResult.getTopics();
// ListTopicResult contains only 100 topics hence use next token to get
// next 100 topics.
while (nextToken != null) {
listTopicsResult = snsClient.listTopics(nextToken);
nextToken = listTopicsResult.getNextToken();
topics.addAll(listTopicsResult.getTopics());
}
// Display all the Topic ARN's
for (Topic topic : topics) {
System.out.println(topic);
/*
* perform your actions here
*/
}
}
}
我知道這是一個古老的但是值得一提的是其他訪問者上面的代碼有一個bug,一個必須調用'snsClient.listTopics()'時使用'nextToken',否則你將有一個無限循環(假設你有超過100個主題)。 –
爲什麼會有無限循環,如果調用snsClient.listTopics()返回最多100個主題? – user1538903
,因爲'nextToken'不會傳遞給後續的'listTopics()'調用。因此,每當循環迭代時,它只會列出前100個主題(並且存在nextToken)。 while循環內的調用應該是'listTopicsResult = snsClient.listTopics(nextToken);' –