/** * Simplified method form for invoking the SendMessage operation. * * @see #sendMessageAsync(SendMessageRequest) */ @Override public java.util.concurrent.Future<SendMessageResult> sendMessageAsync(String queueUrl, String messageBody) { return sendMessageAsync(new SendMessageRequest().withQueueUrl(queueUrl).withMessageBody(messageBody)); }
public void store (TaskStatistics ts) { try { String json = objectMapper.writeValueAsString(ts); SendMessageRequest req = new SendMessageRequest(); req.setMessageBody(json); req.setQueueUrl(queueUrl); sqs.sendMessageAsync(req, new AsyncHandler<SendMessageRequest, SendMessageResult>() { @Override public void onError(Exception e) { LOG.error("Error saving stats to SQS", e); } @Override public void onSuccess(SendMessageRequest request, SendMessageResult sendMessageResult) { /* do nothing */ } }); } catch (Exception e) { LOG.error("Error saving stats to SQS", e); } } }
setMessageDeduplicationId(messageDeduplicationId); return this;
/** * Constructs a new SendMessageRequest object. Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. * * @param queueUrl * The URL of the Amazon SQS queue to which a message is sent.</p> * <p> * Queue URLs and names are case-sensitive. * @param messageBody * The message to send. The maximum string size is 256 KB. * </p> * <important> * <p> * A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed: * </p> * <p> * <code>#x9</code> | <code>#xA</code> | <code>#xD</code> | <code>#x20</code> to <code>#xD7FF</code> | * <code>#xE000</code> to <code>#xFFFD</code> | <code>#x10000</code> to <code>#x10FFFF</code> * </p> * <p> * Any characters not included in this list will be rejected. For more information, see the <a * href="http://www.w3.org/TR/REC-xml/#charsets">W3C specification for characters</a>. * </p> */ public SendMessageRequest(String queueUrl, String messageBody) { setQueueUrl(queueUrl); setMessageBody(messageBody); }
@Override public Future<SendMessageResult> sendMessageAsync(String queueUrl, String messageBody) { return sendMessageAsync(new SendMessageRequest(queueUrl, messageBody)); }
private SendMessageRequest prepareSendMessageRequest(Message<?> message) { SendMessageRequest sendMessageRequest = new SendMessageRequest(this.queueUrl, String.valueOf(message.getPayload())); if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_GROUP_ID_HEADER)) { sendMessageRequest.setMessageGroupId(message.getHeaders().get(SqsMessageHeaders.SQS_GROUP_ID_HEADER, String.class)); } if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_DEDUPLICATION_ID_HEADER)) { sendMessageRequest.setMessageDeduplicationId(message.getHeaders().get(SqsMessageHeaders.SQS_DEDUPLICATION_ID_HEADER, String.class)); } if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_DELAY_HEADER)) { sendMessageRequest.setDelaySeconds(message.getHeaders().get(SqsMessageHeaders.SQS_DELAY_HEADER, Integer.class)); } Map<String, MessageAttributeValue> messageAttributes = getMessageAttributes(message); if (!messageAttributes.isEmpty()) { sendMessageRequest.withMessageAttributes(messageAttributes); } return sendMessageRequest; }
private void sendMessage(String action, String user) { final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("id", new MessageAttributeValue().withDataType("String").withStringValue(user)); messageAttributes.put("action", new MessageAttributeValue().withDataType("String").withStringValue(action)); SendMessageRequest sendMessageRequest = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody("-") .withMessageDeduplicationId(user + action) .withMessageGroupId(user) .withMessageAttributes(messageAttributes); try { sqs.sendMessage(sendMessageRequest); } catch (AmazonServiceException ex) { serviceErrorMeter.mark(); logger.warn("sqs service error: ", ex); } catch (AmazonClientException ex) { clientErrorMeter.mark(); logger.warn("sqs client error: ", ex); } catch (Throwable t) { logger.warn("sqs unexpected error: ", t); } }
@Override public SendMessageResult sendMessage(String queueName, String messageText, Map<String, MessageAttributeValue> messageAttributes, AmazonSQS amazonSQS) { try { return amazonSQS.sendMessage(new SendMessageRequest().withQueueUrl(amazonSQS.getQueueUrl(queueName).getQueueUrl()).withMessageBody(messageText) .withMessageAttributes(messageAttributes)); } catch (QueueDoesNotExistException e) { throw new IllegalStateException(String.format("AWS SQS queue with \"%s\" name not found.", queueName), e); } } }
addReplyToQueueReservedAttributes(messageAttributes, message); SendMessageRequest sendMessageRequest = new SendMessageRequest(queue.getQueueUrl(), sqsMessageBody); sendMessageRequest.setMessageAttributes(messageAttributes); sendMessageRequest.setMessageGroupId(message.getSQSMessageGroupId()); sendMessageRequest.setMessageDeduplicationId(message.getSQSMessageDeduplicationId());
public static String sendMessage(String relativeQueueUrl, String message, Map<String,CQSMessageAttribute> messageAttributes) throws Exception { long ts1 = System.currentTimeMillis(); String receiptHandle = null; if (useInlineApiCalls) { receiptHandle = CQSAPI.sendMessage(cnsInternal.getUserId(), relativeQueueUrl, message, null, messageAttributes); } else { String absoluteQueueUrl = Util.getAbsoluteQueueUrlForRelativeUrl(relativeQueueUrl); SendMessageRequest sendMessageRequest = new SendMessageRequest(absoluteQueueUrl, message); if (messageAttributes != null) { for (String messageAttributeName : messageAttributes.keySet()) { MessageAttributeValue value = new MessageAttributeValue(); value.setDataType(messageAttributes.get(messageAttributeName).getDataType()); value.setStringValue(messageAttributes.get(messageAttributeName).getStringValue()); sendMessageRequest.addMessageAttributesEntry(messageAttributeName, value); } } SendMessageResult sendMessageResult = sqs.sendMessage(sendMessageRequest); receiptHandle = sendMessageResult.getMessageId(); } long ts2 = System.currentTimeMillis(); CMBControllerServlet.valueAccumulator.addToCounter(AccumulatorName.CNSCQSTime, ts2 - ts1); logger.debug("event=send_message message_id=" + receiptHandle); return receiptHandle; }
SendMessageRequest send_msg_request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody("hello world") .withDelaySeconds(5); sqs.sendMessage(send_msg_request);
private <T extends Serializable> void sendMessageToLocalRegionSync(final T body) throws IOException { if ( sqs == null ) { logger.error( "SQS client is null, perhaps it failed to initialize successfully" ); return; } final String stringBody = toString( body ); if (logger.isDebugEnabled()) { logger.debug(" sendMessageToLocalRegion " + stringBody); } String url = getReadQueue().getUrl(); if ( logger.isTraceEnabled() ) { logger.trace( "Publishing Message...{} to url: {}", stringBody, url ); } SendMessageRequest messageRequest = new SendMessageRequest(url, stringBody); try { SendMessageResult result = sqs.sendMessage(messageRequest); if (logger.isTraceEnabled()) { logger.trace("Successfully published... messageID=[{}], arn=[{}]", result.getMessageId(), url); } } catch (Exception e) { logger.error(FAILED_TO_SEND_MESSAGE, messageRequest.getMessageBody(), url, e); sendMessageToLocalRegionAsync(body); } }
@Override public String sendMessage(String queueUrl, String body) throws InterruptedException { final SendMessageRequest sendMessageRequest = new SendMessageRequest(queueUrl, body); if (sqsConfig.getSinkQueueConfig().isFifoEnabled()) { sendMessageRequest.setMessageGroupId(queueUrl); if (!sqsConfig.getSinkQueueConfig().isFifoContentDedupEnabled()) { sendMessageRequest.setMessageDeduplicationId(Long.toString(System.nanoTime())); } } while (true) { try { return getSQSClient().sendMessage(sendMessageRequest).getMessageId(); } catch (RuntimeException ex) { if (isCause(UnknownHostException.class, ex) || isCause(SocketException.class, ex)) { LOG.warn("Cannot reach AWS at {} while trying to send a message, trying again in 5 seconds...", queueUrl); Thread.sleep(5000); } else { throw ex; } } } }
@Override public SendMessageResult sendMessage(String messageBody, ResultCapture<SendMessageResult> extractor) { SendMessageRequest request = new SendMessageRequest() .withMessageBody(messageBody); return sendMessage(request, extractor); }
private SendMessageRequest storeMessageInS3(SendMessageRequest sendMessageRequest) { checkMessageAttributes(sendMessageRequest.getMessageAttributes()); String s3Key = UUID.randomUUID().toString(); // Read the content of the message from message body String messageContentStr = sendMessageRequest.getMessageBody(); Long messageContentSize = getStringSizeInBytes(messageContentStr); // Add a new message attribute as a flag MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); messageAttributeValue.setDataType("Number"); messageAttributeValue.setStringValue(messageContentSize.toString()); sendMessageRequest.addMessageAttributesEntry(SQSExtendedClientConstants.RESERVED_ATTRIBUTE_NAME, messageAttributeValue); // Store the message content in S3. storeTextInS3(s3Key, messageContentStr, messageContentSize); LOG.info("S3 object created, Bucket name: " + clientConfiguration.getS3BucketName() + ", Object key: " + s3Key + "."); // Convert S3 pointer (bucket name, key, etc) to JSON string MessageS3Pointer s3Pointer = new MessageS3Pointer(clientConfiguration.getS3BucketName(), s3Key); String s3PointerStr = getJSONFromS3Pointer(s3Pointer); // Storing S3 pointer in the message body. sendMessageRequest.setMessageBody(s3PointerStr); return sendMessageRequest; }
setMessageBody(messageBody); return this;
/** * <p> * The URL of the Amazon SQS queue to which a message is sent. * </p> * <p> * Queue URLs and names are case-sensitive. * </p> * * @param queueUrl * The URL of the Amazon SQS queue to which a message is sent.</p> * <p> * Queue URLs and names are case-sensitive. * @return Returns a reference to this object so that method calls can be chained together. */ public SendMessageRequest withQueueUrl(String queueUrl) { setQueueUrl(queueUrl); return this; }
@Override public SendMessageResult sendMessage(String queueUrl, String messageBody) throws AmazonServiceException, AmazonClientException { return sendMessage(new SendMessageRequest(queueUrl, messageBody)); }
private SendMessageRequest prepareSendMessageRequest(Message<?> message) { SendMessageRequest sendMessageRequest = new SendMessageRequest(this.queueUrl, String.valueOf(message.getPayload())); if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_GROUP_ID_HEADER)) { sendMessageRequest.setMessageGroupId(message.getHeaders().get(SqsMessageHeaders.SQS_GROUP_ID_HEADER, String.class)); } if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_DEDUPLICATION_ID_HEADER)) { sendMessageRequest.setMessageDeduplicationId(message.getHeaders().get(SqsMessageHeaders.SQS_DEDUPLICATION_ID_HEADER, String.class)); } if (message.getHeaders().containsKey(SqsMessageHeaders.SQS_DELAY_HEADER)) { sendMessageRequest.setDelaySeconds(message.getHeaders().get(SqsMessageHeaders.SQS_DELAY_HEADER, Integer.class)); } Map<String, MessageAttributeValue> messageAttributes = getMessageAttributes(message); if (!messageAttributes.isEmpty()) { sendMessageRequest.withMessageAttributes(messageAttributes); } return sendMessageRequest; }
@Override public SendMessageResult sendMessage(String queueName, String messageText, Map<String, MessageAttributeValue> messageAttributes, AmazonSQS amazonSQS) { try { return amazonSQS.sendMessage(new SendMessageRequest().withQueueUrl(amazonSQS.getQueueUrl(queueName).getQueueUrl()).withMessageBody(messageText) .withMessageAttributes(messageAttributes)); } catch (QueueDoesNotExistException e) { throw new IllegalStateException(String.format("AWS SQS queue with \"%s\" name not found.", queueName), e); } } }