/** * Simplified method form for invoking the Publish operation. * * @see #publishAsync(PublishRequest) */ @Override public java.util.concurrent.Future<PublishResult> publishAsync(String topicArn, String message, String subject) { return publishAsync(new PublishRequest().withTopicArn(topicArn).withMessage(message).withSubject(subject)); }
setTopicArn(topicArn); setMessage(message); setSubject(subject);
@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getTopicArn() == null) ? 0 : getTopicArn().hashCode()); hashCode = prime * hashCode + ((getTargetArn() == null) ? 0 : getTargetArn().hashCode()); hashCode = prime * hashCode + ((getPhoneNumber() == null) ? 0 : getPhoneNumber().hashCode()); hashCode = prime * hashCode + ((getMessage() == null) ? 0 : getMessage().hashCode()); hashCode = prime * hashCode + ((getSubject() == null) ? 0 : getSubject().hashCode()); hashCode = prime * hashCode + ((getMessageStructure() == null) ? 0 : getMessageStructure().hashCode()); hashCode = prime * hashCode + ((getMessageAttributes() == null) ? 0 : getMessageAttributes().hashCode()); return hashCode; }
/** * Simplified method form for invoking the Publish operation. * * @see #publishAsync(PublishRequest) */ @Override public java.util.concurrent.Future<PublishResult> publishAsync(String topicArn, String message) { return publishAsync(new PublishRequest().withTopicArn(topicArn).withMessage(message)); }
PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); publishRequest.setSubject(subject); return publish(publishRequest);
final PublishRequest request = new PublishRequest(); request.setMessage(message); request.setMessageStructure("json"); final String arnType = context.getProperty(ARN_TYPE).getValue(); if (arnType.equalsIgnoreCase(ARN_TYPE_TOPIC.getValue())) { request.setTopicArn(arn); } else { request.setTargetArn(arn); request.setSubject(subject); value.setStringValue(context.getProperty(entry.getKey()).evaluateAttributeExpressions(flowFile).getValue()); value.setDataType("String"); request.addMessageAttributesEntry(entry.getKey().getName(), value);
public PublishResult sendPushMessage(AmazonSNS snsClient, PushPlatform platform, String targetArn, String message, Map<String, MessageAttributeValue> messageAttributes) throws IOException { Map<String, String> messageMap = new HashMap<String, String>(); messageMap.put(platform.name(), message); message = ServerUtil.asJson(messageMap); PublishRequest publishRequest = new PublishRequest(); publishRequest.setMessageStructure("json"); if (messageAttributes != null) { publishRequest.setMessageAttributes(messageAttributes); } publishRequest.setTargetArn(targetArn); publishRequest.setMessage(message); PublishResult publishResult = snsClient.publish(publishRequest); return publishResult; } }
PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); return publish(publishRequest);
@Override public PublishResult retriableCall() throws Exception { PublishRequest publishRequest = new PublishRequest(topic_arn, msg) .withMessageAttributes(messageAttributes); return snsClient.publish(publishRequest); } }.call();
@Override public PublishResult publish(String topicArn, String messageText, Map<String, MessageAttributeValue> messageAttributes, AmazonSNS amazonSNS) { return amazonSNS.publish(new PublishRequest().withTopicArn(topicArn).withMessage(messageText).withMessageAttributes(messageAttributes)); } }
private <T extends Serializable> void sendMessageToAllRegionsAsync(final T body ) throws IOException { if ( snsAsync == null ) { logger.error( "SNS client is null, perhaps it failed to initialize successfully" ); return; } final String stringBody = toString( body ); final String topicArn = getWriteTopicArn(); if ( logger.isTraceEnabled() ) { logger.trace( "Publishing Message...{} to arn: {}", stringBody, topicArn ); } PublishRequest publishRequest = new PublishRequest( topicArn, stringBody ); snsAsync.publishAsync( publishRequest, new AsyncHandler<PublishRequest, PublishResult>() { @Override public void onError( Exception e ) { logger.error( "Error publishing message... {}", e ); logger.error(FAILED_TO_SEND_MESSAGE, stringBody, topicArn, e); } @Override public void onSuccess( PublishRequest request, PublishResult result ) { if ( logger.isTraceEnabled() ) { logger.trace( "Successfully published... messageID=[{}], arn=[{}]", result.getMessageId(), request.getTopicArn() ); } } } ); }
@TaskAction public void publishMessage() { String topicArn = getTopicArn(); String message = getMessage(); String subject = getSubject(); String messageStructure = getMessageStructure(); if (topicArn == null) { throw new GradleException("Must specify SNS topicArn"); } if (message == null) { throw new GradleException("Must provide message to send to SNS"); } AmazonSNSPluginExtension ext = getProject().getExtensions().getByType(AmazonSNSPluginExtension.class); AmazonSNS sns = ext.getClient(); PublishRequest request = new PublishRequest().withTopicArn(topicArn).withMessage(message); if (subject != null) { request.setSubject(subject); } if (messageStructure != null) { request.setMessageStructure(messageStructure); } sns.publish(request); }
@Override public PublishResult publish(String subject, String message, ResultCapture<PublishResult> extractor) { PublishRequest request = new PublishRequest() .withSubject(subject) .withMessage(message); return publish(request, extractor); }
PublishRequest publishRequest = new PublishRequest(); publishRequest.setMessage(message); publishRequest.setSubject(subject); publishRequest.withTargetArn(endpoint); //This can also be a "topic" ARN snsClient.publish(publishRequest);
@Override public PublishResult publish(String message, ResultCapture<PublishResult> extractor) { PublishRequest request = new PublishRequest() .withMessage(message); return publish(request, extractor); }
setTopicArn(topicArn); setMessage(message);
@Test @SuppressWarnings("unchecked") public void testSnsMessageHandler() { SnsBodyBuilder payload = SnsBodyBuilder.withDefault("foo") .forProtocols("{\"foo\" : \"bar\"}", "sms"); Message<?> message = MessageBuilder.withPayload(payload) .setHeader("topic", "topic") .setHeader("subject", "subject") .setHeader("foo", "bar") .build(); this.sendToSnsChannel.send(message); Message<?> reply = this.resultChannel.receive(10000); assertThat(reply).isNotNull(); ArgumentCaptor<PublishRequest> captor = ArgumentCaptor.forClass(PublishRequest.class); verify(this.amazonSNS).publishAsync(captor.capture(), any(AsyncHandler.class)); PublishRequest publishRequest = captor.getValue(); assertThat(publishRequest.getMessageStructure()).isEqualTo("json"); assertThat(publishRequest.getTopicArn()).isEqualTo("topic"); assertThat(publishRequest.getSubject()).isEqualTo("subject"); assertThat(publishRequest.getMessage()) .isEqualTo("{\"default\":\"foo\",\"sms\":\"{\\\"foo\\\" : \\\"bar\\\"}\"}"); Map<String, MessageAttributeValue> messageAttributes = publishRequest.getMessageAttributes(); assertThat(messageAttributes).doesNotContainKey(MessageHeaders.ID); assertThat(messageAttributes).doesNotContainKey(MessageHeaders.TIMESTAMP); assertThat(messageAttributes).containsKey("foo"); assertThat(messageAttributes.get("foo").getStringValue()).isEqualTo("bar"); assertThat(reply.getHeaders().get(AwsHeaders.MESSAGE_ID)).isEqualTo("111"); assertThat(reply.getHeaders().get(AwsHeaders.TOPIC)).isEqualTo("topic"); assertThat(reply.getPayload()).isSameAs(payload); }
@Override public void send(DataHighwayNotification notification) { String topicArn = topicArnFactory.topicArn(notification); try { final String jsonMessage = objectWriter.writeValueAsString(notification); if (jsonMessage.getBytes(Charsets.UTF_8).length > SNS_MESSAGE_SIZE_LIMIT_BYTES) { log.error("Message length exceeds SNS limit ({} bytes).", SNS_MESSAGE_SIZE_LIMIT_BYTES); } log.debug("Attempting to send message to topic '{}': {}", topicArn, jsonMessage); String message = messageFactory.message(topicArn, notification); PublishRequest request = new PublishRequest(topicArn, jsonMessage, message); request.addMessageAttributesEntry(PROTOCOL_VERSION, attributeStringValue(notification.getProtocolVersion())); request.addMessageAttributesEntry(TYPE, attributeStringValue(notification.getType().name())); request.addMessageAttributesEntry(ROAD_NAME, attributeStringValue(notification.getRoadName())); try { sns.publish(request); } catch (AmazonClientException e) { log.error("Could not publish message '{}' to SNS topic '{}'.", message, topicArn, e); } } catch (JsonProcessingException e) { log.error("Could not serialize message '{}'.", notification, e); } }
@Override public void onSuccess( PublishRequest request, PublishResult result ) { if ( logger.isTraceEnabled() ) { logger.trace( "Successfully published... messageID=[{}], arn=[{}]", result.getMessageId(), request.getTopicArn() ); } } } );
/** * <p> * Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This field * will also be included, if present, in the standard JSON messages delivered to other endpoints. * </p> * <p> * Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include * line breaks or control characters; and must be less than 100 characters long. * </p> * * @param subject * Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This * field will also be included, if present, in the standard JSON messages delivered to other endpoints.</p> * <p> * Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not * include line breaks or control characters; and must be less than 100 characters long. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withSubject(String subject) { setSubject(subject); return this; }