List of usage examples for com.amazonaws.services.sns.model PublishRequest setTopicArn
public void setTopicArn(String topicArn)
The topic you want to publish to.
From source file:ch.admin.isb.hermes5.tools.filebackup.FileBackup.java
License:Apache License
private void sendMessageThroughSNS(String topicArn, AmazonSNS sns, String message, String subject) { if (message.isEmpty()) { return;/*from w w w .ja v a2s. c om*/ } PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setSubject(subject); publishRequest.setMessage(truncateUTF8(message, 8192)); sns.publish(publishRequest); }
From source file:ch.admin.isb.hermes5.tools.lognotification.LogNotification.java
License:Apache License
private void sendMessageThroughSNS(String topicArn, AmazonSNS sns, String message, String subject) { if (message.isEmpty()) { return;//from ww w . j a v a 2 s. c o m } PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setSubject(subject); publishRequest.setMessage(truncateUTF8Tail(message, 8192)); sns.publish(publishRequest); }
From source file:com.amazon.aws.samplecode.travellog.aws.TravelLogSNSManager.java
License:Open Source License
/** * Publishes a comment to the specified entry. The method takes the comment and * builds an SNS PublishRequest object. Then the comment is published to the topic associated * with the incoming entry.//from w w w. ja v a 2s . c o m * * @param entry the entry to publish to * @param comment the comment to publish * @return the result returned from AWS */ public PublishResult publish(Entry entry, Comment comment) { PublishRequest request = new PublishRequest(); request.setTopicArn(entry.getSnsArn()); StringBuilder subject = new StringBuilder("Comment Posted to Entry '"); subject.append(entry.getTitle()).append("'"); request.setSubject(subject.toString()); StringBuilder body = new StringBuilder(); body.append("The following comment was posted to the post '").append(entry.getTitle()).append("'\n"); body.append("Posted by: ").append(comment.getCommenter().getName()).append("\n\n"); body.append(comment.getBody()); request.setMessage(body.toString()); return snsClient.publish(request); }
From source file:com.comcast.cmb.test.tools.CMBTutorial.java
License:Apache License
public static void main(String[] args) { try {/*from ww w . ja v a2 s. c om*/ Util.initLog4jTest(); //TODO: set user id and credentials for two distinct users // user "cqs_test_1" //BasicAWSCredentials user1Credentials = new BasicAWSCredentials("<access_key>", "<secret_key>"); BasicAWSCredentials user1Credentials = new BasicAWSCredentials("Z2DVBFRNZ2C2SSXDWS5F", "bH2UQiJkpctBaE3eaDob19fj5J9Q1FVafrZantBp"); // user "cqs_test_2" //String user2Id = "<user_id>"; String user2Id = "389653920093"; //BasicAWSCredentials user2Credentials = new BasicAWSCredentials("<access_key>", "<secret_key>"); BasicAWSCredentials user2Credentials = new BasicAWSCredentials("QL8Q1VOBCSJC5FZ2DMIU", "n6a82gyJZ04Z+Xqp7OgfqPtbbKqVc3UbuOTNrF+7"); // service urls //TODO: add service URLs //String cqsServerUrl = "http://<host>:<port>"; //String cnsServerUrl = "http://<host>:<port>"; String cqsServerUrl = "http://localhost:6059"; String cnsServerUrl = "http://localhost:6061"; // initialize service AmazonSQSClient sqs = new AmazonSQSClient(user1Credentials); sqs.setEndpoint(cqsServerUrl); AmazonSNSClient sns = new AmazonSNSClient(user2Credentials); sns.setEndpoint(cnsServerUrl); // create queue Random randomGenerator = new Random(); String queueName = QUEUE_PREFIX + randomGenerator.nextLong(); HashMap<String, String> attributeParams = new HashMap<String, String>(); CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName); createQueueRequest.setAttributes(attributeParams); String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl(); AddPermissionRequest addPermissionRequest = new AddPermissionRequest(); addPermissionRequest.setQueueUrl(queueUrl); addPermissionRequest.setActions(Arrays.asList("SendMessage")); addPermissionRequest.setLabel(UUID.randomUUID().toString()); addPermissionRequest.setAWSAccountIds(Arrays.asList(user2Id)); sqs.addPermission(addPermissionRequest); // create topic String topicName = "TSTT" + randomGenerator.nextLong(); CreateTopicRequest createTopicRequest = new CreateTopicRequest(topicName); CreateTopicResult createTopicResult = sns.createTopic(createTopicRequest); String topicArn = createTopicResult.getTopicArn(); // subscribe and confirm cqs endpoint SubscribeRequest subscribeRequest = new SubscribeRequest(); String queueArn = getArnForQueueUrl(queueUrl); subscribeRequest.setEndpoint(queueArn); subscribeRequest.setProtocol("cqs"); subscribeRequest.setTopicArn(topicArn); SubscribeResult subscribeResult = sns.subscribe(subscribeRequest); String subscriptionArn = subscribeResult.getSubscriptionArn(); if (subscriptionArn.equals("pending confirmation")) { Thread.sleep(500); ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(); receiveMessageRequest.setQueueUrl(queueUrl); receiveMessageRequest.setMaxNumberOfMessages(1); ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest); List<Message> messages = receiveMessageResult.getMessages(); if (messages != null && messages.size() == 1) { JSONObject o = new JSONObject(messages.get(0).getBody()); if (!o.has("SubscribeURL")) { throw new Exception("message is not a confirmation messsage"); } String subscriptionUrl = o.getString("SubscribeURL"); httpGet(subscriptionUrl); DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(); deleteMessageRequest.setReceiptHandle(messages.get(0).getReceiptHandle()); deleteMessageRequest.setQueueUrl(queueUrl); sqs.deleteMessage(deleteMessageRequest); } else { throw new Exception("no confirmation message found"); } } // publish and receive message PublishRequest publishRequest = new PublishRequest(); String messageText = "quamvis sint sub aqua, sub aqua maledicere temptant"; publishRequest.setMessage(messageText); publishRequest.setSubject("unit test message"); publishRequest.setTopicArn(topicArn); sns.publish(publishRequest); Thread.sleep(500); ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(); receiveMessageRequest.setQueueUrl(queueUrl); receiveMessageRequest.setMaxNumberOfMessages(1); ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest); List<Message> messages = receiveMessageResult.getMessages(); if (messages != null && messages.size() == 1) { String messageBody = messages.get(0).getBody(); if (!messageBody.contains(messageText)) { throw new Exception("message text not found"); } DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(); deleteMessageRequest.setReceiptHandle(messages.get(0).getReceiptHandle()); deleteMessageRequest.setQueueUrl(queueUrl); sqs.deleteMessage(deleteMessageRequest); } else { throw new Exception("no messages found"); } // subscribe and confirm http endpoint String id = randomGenerator.nextLong() + ""; String endPointUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + id; String lastMessageUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "info/" + id + "?showLast=true"; subscribeRequest = new SubscribeRequest(); subscribeRequest.setEndpoint(endPointUrl); subscribeRequest.setProtocol("http"); subscribeRequest.setTopicArn(topicArn); subscribeResult = sns.subscribe(subscribeRequest); subscriptionArn = subscribeResult.getSubscriptionArn(); if (subscriptionArn.equals("pending confirmation")) { Thread.sleep(500); String response = httpGet(lastMessageUrl); JSONObject o = new JSONObject(response); if (!o.has("SubscribeURL")) { throw new Exception("message is not a confirmation messsage"); } String subscriptionUrl = o.getString("SubscribeURL"); response = httpGet(subscriptionUrl); } // publish and receive message publishRequest = new PublishRequest(); publishRequest.setMessage(messageText); publishRequest.setSubject("unit test message"); publishRequest.setTopicArn(topicArn); sns.publish(publishRequest); Thread.sleep(500); String response = httpGet(lastMessageUrl); if (response != null && response.length() > 0) { if (!response.contains(messageText)) { throw new Exception("message text not found"); } } else { throw new Exception("no messages found"); } // delete queue and topic DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(topicArn); sns.deleteTopic(deleteTopicRequest); sqs.deleteQueue(new DeleteQueueRequest(queueUrl)); System.out.println("OK"); } catch (Exception ex) { ex.printStackTrace(); } }
From source file:io.macgyver.plugin.cloud.aws.event.SNSMacGyverEventWriter.java
License:Apache License
public void subscribe(EventSystem eventSystem) { Consumer consumer = new Consumer() { public void accept(Object event) { try { if (isEnabled()) { PublishRequest request = new PublishRequest(); request.setTopicArn(getTopicArn().get()); request.setMessage(MacGyverMessage.class.cast(event).getEnvelope().toString()); getSNSClient().get().publishAsync(request, new ResponseHandler()); }//from w w w . jav a2 s . c o m } catch (Exception e) { logger.error("problem sending message to SNS: {}", e.toString()); } } }; ConcurrentSubscribers.createConcurrentSubscriber(eventSystem.createObservable(MacGyverMessage.class)) .withNewExecutor(b -> { b.withThreadPoolSize(2).withThreadNameFormat("SNSMacGyverEventWriter-%d"); }).subscribe(consumer); }
From source file:org.apache.camel.component.aws.sns.SnsProducer.java
License:Apache License
public void process(Exchange exchange) throws Exception { PublishRequest request = new PublishRequest(); request.setTopicArn(getConfiguration().getTopicArn()); request.setMessage(exchange.getIn().getBody(String.class)); request.setSubject(determineSubject(exchange)); LOG.trace("Sending request [{}] from exchange [{}]...", request, exchange); PublishResult result = getEndpoint().getSNSClient().publish(request); LOG.trace("Received result [{}]", result); Message message = getMessageForResponse(exchange); message.setHeader(SnsConstants.MESSAGE_ID, result.getMessageId()); }
From source file:org.apache.nifi.processors.aws.sns.PutSNS.java
License:Apache License
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { FlowFile flowFile = session.get();/*from w w w . j a v a 2s .co m*/ if (flowFile == null) { return; } if (flowFile.getSize() > MAX_SIZE) { getLogger().error( "Cannot publish {} to SNS because its size exceeds Amazon SNS's limit of 256KB; routing to failure", new Object[] { flowFile }); session.transfer(flowFile, REL_FAILURE); return; } final Charset charset = Charset .forName(context.getProperty(CHARACTER_ENCODING).evaluateAttributeExpressions(flowFile).getValue()); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); session.exportTo(flowFile, baos); final String message = new String(baos.toByteArray(), charset); final AmazonSNSClient client = getClient(); final PublishRequest request = new PublishRequest(); request.setMessage(message); if (context.getProperty(USE_JSON_STRUCTURE).asBoolean()) { request.setMessageStructure("json"); } final String arn = context.getProperty(ARN).evaluateAttributeExpressions(flowFile).getValue(); final String arnType = context.getProperty(ARN_TYPE).getValue(); if (arnType.equalsIgnoreCase(ARN_TYPE_TOPIC.getValue())) { request.setTopicArn(arn); } else { request.setTargetArn(arn); } final String subject = context.getProperty(SUBJECT).evaluateAttributeExpressions(flowFile).getValue(); if (subject != null) { request.setSubject(subject); } for (final Map.Entry<PropertyDescriptor, String> entry : context.getProperties().entrySet()) { if (entry.getKey().isDynamic() && !StringUtils.isEmpty(entry.getValue())) { final MessageAttributeValue value = new MessageAttributeValue(); value.setStringValue( context.getProperty(entry.getKey()).evaluateAttributeExpressions(flowFile).getValue()); value.setDataType("String"); request.addMessageAttributesEntry(entry.getKey().getName(), value); } } try { client.publish(request); session.transfer(flowFile, REL_SUCCESS); session.getProvenanceReporter().send(flowFile, arn); getLogger().info("Successfully published notification for {}", new Object[] { flowFile }); } catch (final Exception e) { getLogger().error("Failed to publish Amazon SNS message for {} due to {}", new Object[] { flowFile, e }); flowFile = session.penalize(flowFile); session.transfer(flowFile, REL_FAILURE); } }
From source file:org.springframework.integration.aws.outbound.SnsMessageHandler.java
License:Apache License
@Override protected Object handleRequestMessage(Message<?> requestMessage) { Object payload = requestMessage.getPayload(); PublishRequest publishRequest = null; if (payload instanceof PublishRequest) { publishRequest = (PublishRequest) payload; } else {/*from w w w. j a v a2s . c om*/ Assert.state(this.topicArnExpression != null, "'topicArn' or 'topicArnExpression' must be specified."); publishRequest = new PublishRequest(); String topicArn = this.topicArnExpression.getValue(this.evaluationContext, requestMessage, String.class); if (this.resourceIdResolver != null) { topicArn = this.resourceIdResolver.resolveToPhysicalResourceId(topicArn); } publishRequest.setTopicArn(topicArn); if (this.subjectExpression != null) { String subject = this.subjectExpression.getValue(this.evaluationContext, requestMessage, String.class); publishRequest.setSubject(subject); } Object snsMessage = requestMessage.getPayload(); if (this.bodyExpression != null) { snsMessage = this.bodyExpression.getValue(this.evaluationContext, requestMessage); } if (snsMessage instanceof SnsBodyBuilder) { publishRequest.withMessageStructure("json").setMessage(((SnsBodyBuilder) snsMessage).build()); } else { publishRequest.setMessage(getConversionService().convert(snsMessage, String.class)); } } PublishResult publishResult = this.amazonSns.publish(publishRequest); if (this.produceReply) { return getMessageBuilderFactory().withPayload(publishRequest) .setHeader(AwsHeaders.TOPIC, publishRequest.getTopicArn()) .setHeader(AwsHeaders.SNS_PUBLISHED_MESSAGE_ID, publishResult.getMessageId()); } else { return null; } }