List of usage examples for com.amazonaws.services.sqs.model MessageAttributeValue MessageAttributeValue
MessageAttributeValue
From source file:com.amazon.sqs.javamessaging.AmazonSQSExtendedClient.java
License:Open Source License
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);/* www.j a v a 2s .c o m*/ // 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; }
From source file:com.amazon.sqs.javamessaging.AmazonSQSExtendedClient.java
License:Open Source License
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);//w w w . j a v a 2 s . co m // 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; }
From source file:com.amazon.sqs.javamessaging.SQSMessageProducer.java
License:Open Source License
/** * Not verified on the client side, but SQS Attribute names must be valid * letter or digit on the basic multilingual plane in addition to allowing * '_', '-' and '.'. No component of an attribute name may be empty, thus an * attribute name may neither start nor end in '.'. And it may not contain * "..".//from w ww.ja va 2 s . c om */ Map<String, MessageAttributeValue> propertyToMessageAttribute(SQSMessage message) throws JMSException { Map<String, MessageAttributeValue> messageAttributes = new HashMap<String, MessageAttributeValue>(); Enumeration<String> propertyNames = message.getPropertyNames(); while (propertyNames.hasMoreElements()) { String propertyName = propertyNames.nextElement(); // This is generated from SQS message attribute "ApproximateReceiveCount" if (propertyName.equals(SQSMessagingClientConstants.JMSX_DELIVERY_COUNT)) { continue; } JMSMessagePropertyValue propertyObject = message.getJMSMessagePropertyValue(propertyName); MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); messageAttributeValue.setDataType(propertyObject.getType()); messageAttributeValue.setStringValue(propertyObject.getStringMessageAttributeValue()); messageAttributes.put(propertyName, messageAttributeValue); } return messageAttributes; }
From source file:com.amazon.sqs.javamessaging.SQSMessageProducer.java
License:Open Source License
/** * Adds the message type attribute during send as part of the send message * request.//from w ww . ja va 2 s . c om */ private void addMessageTypeReservedAttribute(Map<String, MessageAttributeValue> messageAttributes, SQSMessage message, String value) throws JMSException { MessageAttributeValue messageAttributeValue = new MessageAttributeValue(); messageAttributeValue.setDataType(SQSMessagingClientConstants.STRING); messageAttributeValue.setStringValue(value); /** * This will override the existing attribute if exists. Everything that * has prefix JMS_ is reserved for JMS Provider, but if the user sets that * attribute, it will be overwritten. */ messageAttributes.put(SQSMessage.JMS_SQS_MESSAGE_TYPE, messageAttributeValue); }
From source file:net.smartcosmos.plugin.service.aws.queue.AwsQueueService.java
License:Apache License
@Override public String send(final IQueueRequest queueRequest) { Preconditions.checkNotNull(queueRequest.getMessageBody(), "messageBody must not be null"); Preconditions.checkNotNull(queueRequest.getQueueName(), "queueName must not be null"); if (onlineFlag) { final Region region = assignRegion(sqsAsyncClient); String targetQueueName = fetchQueueName(queueRequest); String queueUrl = sqsAsyncClient.getQueueUrl(new GetQueueUrlRequest(targetQueueName)).getQueueUrl(); LOG.debug("Queue URL for queue named {} in region {}: {}", queueRequest.getQueueName(), region.getName(), queueUrl); SendMessageRequest request = new SendMessageRequest(queueUrl, queueRequest.getMessageBody()); if (null != queueRequest.getMessageAttributes()) { for (Map.Entry<String, String> entry : queueRequest.getMessageAttributes().entrySet()) { if (entry.getValue() != null && entry.getValue().length() > 0) { if (entry.getKey().equals(Field.LAST_MODIFIED_TIMESTAMP_FIELD) || entry.getKey().equals(Field.FILE_CONTENT_LENGTH)) { request.addMessageAttributesEntry(entry.getKey(), new MessageAttributeValue() .withDataType("Number").withStringValue(entry.getValue())); } else { request.addMessageAttributesEntry(entry.getKey(), new MessageAttributeValue() .withDataType("String").withStringValue(entry.getValue())); }/*from w w w. java2s . c o m*/ } } } if (queueRequest.getMoniker() != null && queueRequest.getMoniker().length() > 0) { request.addMessageAttributesEntry(Field.MONIKER_FIELD, new MessageAttributeValue() .withDataType("String").withStringValue(queueRequest.getMoniker())); } final String enqueueUrn = "urn:uuid:" + UUID.randomUUID().toString(); request.addMessageAttributesEntry(Field.QUEUE_URN_FIELD, new MessageAttributeValue().withDataType("String.URN").withStringValue(enqueueUrn)); request.addMessageAttributesEntry(Field.ENTITY_REFERENCE_TYPE, new MessageAttributeValue().withDataType("String.EntityReferenceType") .withStringValue(queueRequest.getEntityReferenceType().toString())); request.addMessageAttributesEntry(Field.REFERENCE_URN_FIELD, new MessageAttributeValue() .withDataType("String.ReferenceUrn").withStringValue(queueRequest.getReferenceUrn())); AwsQueueAsyncHandler asyncHandler = new AwsQueueAsyncHandler(queueRequest, region, enqueueUrn); sqsAsyncClient.sendMessageAsync(request, asyncHandler); return enqueueUrn; } else { throw new AmazonClientException("AWS Queue Service is not online"); } }
From source file:org.apache.nifi.processors.aws.sqs.PutSQS.java
License:Apache License
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { FlowFile flowFile = session.get();//from w ww.ja va 2 s . com if (flowFile == null) { return; } final long startNanos = System.nanoTime(); final AmazonSQSClient client = getClient(); final SendMessageBatchRequest request = new SendMessageBatchRequest(); final String queueUrl = context.getProperty(QUEUE_URL).evaluateAttributeExpressions(flowFile).getValue(); request.setQueueUrl(queueUrl); final Set<SendMessageBatchRequestEntry> entries = new HashSet<>(); final SendMessageBatchRequestEntry entry = new SendMessageBatchRequestEntry(); entry.setId(flowFile.getAttribute("uuid")); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); session.exportTo(flowFile, baos); final String flowFileContent = baos.toString(); entry.setMessageBody(flowFileContent); final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); for (final PropertyDescriptor descriptor : userDefinedProperties) { final MessageAttributeValue mav = new MessageAttributeValue(); mav.setDataType("String"); mav.setStringValue(context.getProperty(descriptor).evaluateAttributeExpressions(flowFile).getValue()); messageAttributes.put(descriptor.getName(), mav); } entry.setMessageAttributes(messageAttributes); entry.setDelaySeconds(context.getProperty(DELAY).asTimePeriod(TimeUnit.SECONDS).intValue()); entries.add(entry); request.setEntries(entries); try { client.sendMessageBatch(request); } catch (final Exception e) { getLogger().error("Failed to send messages to Amazon SQS due to {}; routing to failure", new Object[] { e }); flowFile = session.penalize(flowFile); session.transfer(flowFile, REL_FAILURE); return; } getLogger().info("Successfully published message to Amazon SQS for {}", new Object[] { flowFile }); session.transfer(flowFile, REL_SUCCESS); final long transmissionMillis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos); session.getProvenanceReporter().send(flowFile, queueUrl, transmissionMillis); }
From source file:org.finra.herd.dao.impl.SqsDaoImpl.java
License:Apache License
@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())); }/*from w w w . j av a2 s .c o m*/ } return sqsOperations.sendMessage(queueName, messageText, messageAttributes, awsClientFactory.getAmazonSQSClient(awsParamsDto)); }
From source file:org.springframework.cloud.aws.messaging.core.QueueMessageChannel.java
License:Apache License
private MessageAttributeValue getBinaryMessageAttribute(ByteBuffer messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.BINARY) .withBinaryValue(messageHeaderValue); }
From source file:org.springframework.cloud.aws.messaging.core.QueueMessageChannel.java
License:Apache License
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); }//from w ww .j a va 2 s.com return null; }
From source file:org.springframework.cloud.aws.messaging.core.QueueMessageChannel.java
License:Apache License
private MessageAttributeValue getStringMessageAttribute(String messageHeaderValue) { return new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING) .withStringValue(messageHeaderValue); }