我正在使用AWS SNS服务将警报消息发送到用户电话。但是,用户退订该主题仍然会从该主题中获取消息。要停止让消息用户发送消息STOP。以下是用于创建和订阅主题的代码段。
CreateTopicRequest createTopicRequest = new CreateTopicRequest(topicName);
CreateTopicResult createTopicResult = snsClient.createTopic(createTopicRequest);
//Topic display name
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest();
setTopicAttributesRequest.withTopicArn(createTopicResult.getTopicArn());
setTopicAttributesRequest.setAttributeName(topicAttributeName);
setTopicAttributesRequest.setAttributeValue(topicAttributeValue);
snsClient.setTopicAttributes(setTopicAttributesRequest);
SubscribeRequest subRequest = new SubscribeRequest(createTopicResult.getTopicArn(), "sms","12712438216");
snsClient.subscribe(subRequest);
最佳答案
这个怎么样?
列出所有订阅
循环直到找到endPoint(“ 12712438216”),然后获取arn
执行unsubscribe()函数。
ListSubscriptionsResult listResult = snsClient.listSubscriptions();
List<Subscription> subscriptions = listResult.getSubscriptions();
String arn="";
for (Subscription subs : subscriptions) {
if(subs.getProtocol().equals("sms") && subs.getEndpoint().equals("12712438216")) {
arn = subs.getTopicArn();
break;
}
}
if(!arn.equals("")) {
snsClient.unsubscribe(arn);
}