我们如何使用spring boot和spring cloud starter aws消息确认来自亚马逊SNS的订阅请求?
根据Spring Cloud AWS–Messaging Support教程,我们需要将主题名称添加到控制器级别的@RequestMapping
注释中。
然后在SNS订阅中,我们添加了这样的终点:http://foo.eu-west-1.elb.amazonaws.com/topic_name-sns
=>但就我而言,订阅从未得到确认,我也不知道为什么。
这是我正在使用的一段代码:
@Controller
@RequestMapping("/topic_name-sns")
public class SNSEndpointController {
private static final Logger logger = LoggerFactory.getLogger(SNSEndpointController.class);
@NotificationMessageMapping
public void receiveNotification(@NotificationMessage String message, @NotificationSubject String subject) {
logger.info("Received message: {}, having subject: {}", message, subject);
}
@NotificationUnsubscribeConfirmationMapping
public void confirmSubscriptionMessage(NotificationStatus notificationStatus) {
logger.info("Unsubscribed from Topic");
notificationStatus.confirmSubscription();
}
@NotificationSubscriptionMapping
public void confirmUnsubscribeMessage(NotificationStatus notificationStatus) {
logger.info("Subscribed to Topic");
notificationStatus.confirmSubscription();
}
}
要使用Spring Framework和SNS服务,请考虑使用官方AWS SDK for Java V2,如本AWS教程中所述。
创建发布/订阅Spring引导应用程序
如前所述,您可以在Spring项目中轻松使用AWS SDK for Java API,并且无需在AWS API上使用第三方API。通过这样做,您将获得AWS SDK团队的支持。如果您继续使用第三方API,则您没有AWS SDK团队的支持。
最后我发现了这个问题。与权限有关,我的ECS任务没有权限确认订阅,所以订阅一直没有确认。