我正在使用带有Ruby Amazon SDK的Amazon SNS发送短信。据我所知,方法Aws::SNS::Client#publish
只是将消息发送入队列。
当返回messageId时,消息已保存,Amazon SNS将尽快将其传递给主题的订阅者。
我要知道publish
方法是否只是将发送排入队列,如果有,是否有任何方法可以通过SDK确认消息是否已成功发送?
答案 0 :(得分:1)
您可以查询主题或订阅,但无法查询已发布的邮件。我怀疑AWS会保留它们,但如果它们存在,那么就我所知,没有API可以访问它们。
一种解决方法是使用您自己网站上的http或https端点订阅您自己的每个主题。每次创建主题时,都会为自己的端点创建相应的订阅:
def generate_sns_topic(topic_name)
sns_client = Aws::SNS::Client.new
response = sns_client.create_topic(name: topic_name)
if response.successful?
sns_client.subscribe(topic_arn: topic_response.topic_arn,
protocol: :https,
endpoint: <your_site_endpoint>)
else
<error_handling_here>
end
end
现在您需要创建POST <your_site_endpoint>
以接受AWS消息。收到消息后,您就会知道SNS已发送消息。据推测,您将在数据库中创建一个新的published_messages
表,以跟踪已发布的内容。