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); } }
final MessageAttributeValue mav = new MessageAttributeValue(); mav.setDataType("String"); mav.setStringValue(context.getProperty(descriptor).evaluateAttributeExpressions(flowFile).getValue());
public MessageAttributeValue unmarshall(StaxUnmarshallerContext context) throws Exception { MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); int originalDepth = context.getCurrentDepth(); int targetDepth = originalDepth + 1;
private MessageAttributeValue getNumberMessageAttribute(Object messageHeaderValue) { Assert.isTrue(NumberUtils.STANDARD_NUMBER_TYPES.contains(messageHeaderValue.getClass()), "Only standard number types are accepted as message header."); return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.NUMBER + "." + messageHeaderValue.getClass().getName()).withStringValue(messageHeaderValue.toString()); }
private MessageAttributeValue getNumberMessageAttribute(Object messageHeaderValue) { Assert.isTrue(NumberUtils.STANDARD_NUMBER_TYPES.contains(messageHeaderValue.getClass()), "Only standard number types are accepted as message header."); return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.NUMBER + "." + messageHeaderValue.getClass().getName()).withStringValue(messageHeaderValue.toString()); }
/** * Convenience method for adding a single string attribute. */ private void addStringAttribute(Map<String, MessageAttributeValue> messageAttributes, String key, String value) { MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); messageAttributeValue.setDataType(SQSMessagingClientConstants.STRING); messageAttributeValue.setStringValue(value); messageAttributes.put(key, messageAttributeValue); }
private MessageAttributeValue getContentTypeMessageAttribute(Object messageHeaderValue) { if (messageHeaderValue instanceof MimeType) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(messageHeaderValue.toString()); } else if (messageHeaderValue instanceof String) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue((String) messageHeaderValue); } return null; }
private MessageAttributeValue getContentTypeMessageAttribute(Object messageHeaderValue) { if (messageHeaderValue instanceof MimeType) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(messageHeaderValue.toString()); } else if (messageHeaderValue instanceof String) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue((String) messageHeaderValue); } return null; }
private MessageAttributeValue getBinaryMessageAttribute(ByteBuffer messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.BINARY).withBinaryValue(messageHeaderValue); }
private MessageAttributeValue getStringMessageAttribute(String messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(messageHeaderValue); }
private MessageAttributeValue getStringMessageAttribute(String messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(messageHeaderValue); }
private MessageAttributeValue getBinaryMessageAttribute(ByteBuffer messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.BINARY).withBinaryValue(messageHeaderValue); }
@Override protected MessageAttributeValue buildMessageAttribute(String dataType, Object value) { MessageAttributeValue messageAttributeValue = new MessageAttributeValue() .withDataType(dataType); if (value instanceof ByteBuffer) { return messageAttributeValue.withBinaryValue((ByteBuffer) value); } else { return messageAttributeValue.withStringValue(value.toString()); } }
@Override protected MessageAttributeValue buildMessageAttribute(String dataType, Object value) { MessageAttributeValue messageAttributeValue = new MessageAttributeValue() .withDataType(dataType); if (value instanceof ByteBuffer) { return messageAttributeValue.withBinaryValue((ByteBuffer) value); } else { return messageAttributeValue.withStringValue(value.toString()); } }
public MessageAttributeValue unmarshall(StaxUnmarshallerContext context) throws Exception { MessageAttributeValue messageAttributeValue = new MessageAttributeValue();
@Override public SendMessageResult sendMessage(AwsParamsDto awsParamsDto, String queueName, String messageText, List<MessageHeader> messageHeaders) { Map<String, MessageAttributeValue> messageAttributes = null; if (CollectionUtils.isNotEmpty(messageHeaders)) { messageAttributes = new HashMap<>(); for (MessageHeader messageHeader : messageHeaders) { messageAttributes.put(messageHeader.getKey(), new MessageAttributeValue().withDataType("String").withStringValue(messageHeader.getValue())); } } return sqsOperations.sendMessage(queueName, messageText, messageAttributes, awsClientFactory.getAmazonSQSClient(awsParamsDto)); } }
@Override public SendMessageResult sendMessage(AwsParamsDto awsParamsDto, String queueName, String messageText, List<MessageHeader> messageHeaders) { Map<String, MessageAttributeValue> messageAttributes = null; if (CollectionUtils.isNotEmpty(messageHeaders)) { messageAttributes = new HashMap<>(); for (MessageHeader messageHeader : messageHeaders) { messageAttributes.put(messageHeader.getKey(), new MessageAttributeValue().withDataType("String").withStringValue(messageHeader.getValue())); } } return sqsOperations.sendMessage(queueName, messageText, messageAttributes, awsClientFactory.getAmazonSQSClient(awsParamsDto)); } }
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; }
private SendMessageBatchRequestEntry storeMessageInS3(SendMessageBatchRequestEntry batchEntry) { checkMessageAttributes(batchEntry.getMessageAttributes()); String s3Key = UUID.randomUUID().toString(); // Read the content of the message from message body String messageContentStr = batchEntry.getMessageBody(); Long messageContentSize = getStringSizeInBytes(messageContentStr); // Add a new message attribute as a flag MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); messageAttributeValue.setDataType("Number"); messageAttributeValue.setStringValue(messageContentSize.toString()); batchEntry.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. batchEntry.setMessageBody(s3PointerStr); return batchEntry; }
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; }