List of usage examples for com.amazonaws.services.sqs.model SendMessageRequest setMessageAttributes
public void setMessageAttributes(java.util.Map<String, MessageAttributeValue> messageAttributes)
Each message attribute consists of a Name
, Type
, and Value
.
From source file:com.amazon.sqs.javamessaging.SQSMessageProducer.java
License:Open Source License
void sendInternal(Queue queue, Message message) throws JMSException { checkClosed();/*from w w w. jav a 2 s . c o m*/ String sqsMessageBody = null; String messageType = null; if (message instanceof SQSMessage) { message.setJMSDestination(queue); if (message instanceof SQSBytesMessage) { sqsMessageBody = Base64.encodeAsString(((SQSBytesMessage) message).getBodyAsBytes()); messageType = SQSMessage.BYTE_MESSAGE_TYPE; } else if (message instanceof SQSObjectMessage) { sqsMessageBody = ((SQSObjectMessage) message).getMessageBody(); messageType = SQSMessage.OBJECT_MESSAGE_TYPE; } else if (message instanceof SQSTextMessage) { sqsMessageBody = ((SQSTextMessage) message).getText(); messageType = SQSMessage.TEXT_MESSAGE_TYPE; } } else { throw new MessageFormatException( "Unrecognized message type. Messages have to be one of: SQSBytesMessage, SQSObjectMessage, or SQSTextMessage"); } if (sqsMessageBody == null || sqsMessageBody.isEmpty()) { throw new JMSException("Message body cannot be null or empty"); } Map<String, MessageAttributeValue> messageAttributes = propertyToMessageAttribute((SQSMessage) message); addMessageTypeReservedAttribute(messageAttributes, (SQSMessage) message, messageType); SendMessageRequest sendMessageRequest = new SendMessageRequest(((SQSQueueDestination) queue).getQueueUrl(), sqsMessageBody); sendMessageRequest.setMessageAttributes(messageAttributes); String messageId = amazonSQSClient.sendMessage(sendMessageRequest).getMessageId(); LOG.info("Message sent to SQS with SQS-assigned messageId: " + messageId); /** TODO: Do not support disableMessageID for now.*/ message.setJMSMessageID(String.format(SQSMessagingClientConstants.MESSAGE_ID_FORMAT, messageId)); ((SQSMessage) message).setSQSMessageId(messageId); }
From source file:org.thingsboard.rule.engine.aws.sqs.TbSqsNode.java
License:Apache License
private TbMsg publishMessage(TbContext ctx, TbMsg msg) { String queueUrl = TbNodeUtils.processPattern(this.config.getQueueUrlPattern(), msg.getMetaData()); SendMessageRequest sendMsgRequest = new SendMessageRequest(); sendMsgRequest.withQueueUrl(queueUrl); sendMsgRequest.withMessageBody(msg.getData()); Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); this.config.getMessageAttributes().forEach((k, v) -> { String name = TbNodeUtils.processPattern(k, msg.getMetaData()); String val = TbNodeUtils.processPattern(v, msg.getMetaData()); messageAttributes.put(name, new MessageAttributeValue().withDataType("String").withStringValue(val)); });// w w w. java 2 s. c om sendMsgRequest.setMessageAttributes(messageAttributes); if (this.config.getQueueType() == TbSqsNodeConfiguration.QueueType.STANDARD) { sendMsgRequest.withDelaySeconds(this.config.getDelaySeconds()); } else { sendMsgRequest.withMessageDeduplicationId(msg.getId().toString()); sendMsgRequest.withMessageGroupId(msg.getOriginator().toString()); } SendMessageResult result = this.sqsClient.sendMessage(sendMsgRequest); return processSendMessageResult(ctx, msg, result); }