SNS не публикует сообщение в SQSJAVA

Программисты JAVA общаются здесь
Anonymous
SNS не публикует сообщение в SQS

Сообщение Anonymous »

Используя методPublishMessage(), я могу создавать динамические темы, подписываясь на динамические очереди, но sns не публикуя сообщения в sqs. В чем здесь проблема?

public void publishMessage(String topicName, String message) {
String topicArn = createTopic(topicName);
subSQS(topicArn, topicName);
pubTopic(message, topicArn);
}

private String createTopic(String topicName) {
CreateTopicResponse result = null;
CreateTopicRequest request = CreateTopicRequest.builder()
.name(topicName)
.build();

result = snsClient.createTopic(request);
return result.topicArn();
}

private void pubTopic(String message, String topicArn) {

PublishRequest request = PublishRequest.builder()
.message(message)
.topicArn(topicArn)
.build();

PublishResponse result = this.snsClient.publish(request);
log.info(result.messageId() + " Message sent. Status is " + result.sdkHttpResponse().statusCode());
}

private void subSQS(String topicArn, String queueName) {

CreateQueueRequest createQueueRequest = CreateQueueRequest.builder().queueName(queueName).build();
String queueUrl = sqsClient.createQueue(createQueueRequest).queueUrl();

// Get the ARN of the SQS queue
GetQueueAttributesRequest getQueueAttributesRequest = GetQueueAttributesRequest.builder()
.queueUrl(queueUrl)
.attributeNames( QueueAttributeName.QUEUE_ARN)
.build();
GetQueueAttributesResponse queueAttributes = sqsClient.getQueueAttributes(getQueueAttributesRequest);
String queueArn = queueAttributes.attributes().get(QueueAttributeName.QUEUE_ARN);

try {
SubscribeRequest request = SubscribeRequest.builder()
.protocol("sqs")
.endpoint(queueArn)
.returnSubscriptionArn(true)
.topicArn(topicArn)
.build();

SubscribeResponse result = snsClient.subscribe(request);
System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode());
} catch (SnsException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}



Подробнее здесь: https://stackoverflow.com/questions/787 ... age-to-sqs

Вернуться в «JAVA»