Example usage for com.amazonaws.services.sns.model PublishRequest addMessageAttributesEntry

List of usage examples for com.amazonaws.services.sns.model PublishRequest addMessageAttributesEntry

Introduction

In this page you can find the example usage for com.amazonaws.services.sns.model PublishRequest addMessageAttributesEntry.

Prototype

public PublishRequest addMessageAttributesEntry(String key, MessageAttributeValue value) 

Source Link

Usage

From source file:org.apache.nifi.processors.aws.sns.PutSNS.java

License:Apache License

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) {
    FlowFile flowFile = session.get();/*from   w  ww . ja va2s . co m*/
    if (flowFile == null) {
        return;
    }

    if (flowFile.getSize() > MAX_SIZE) {
        getLogger().error(
                "Cannot publish {} to SNS because its size exceeds Amazon SNS's limit of 256KB; routing to failure",
                new Object[] { flowFile });
        session.transfer(flowFile, REL_FAILURE);
        return;
    }

    final Charset charset = Charset
            .forName(context.getProperty(CHARACTER_ENCODING).evaluateAttributeExpressions(flowFile).getValue());

    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    session.exportTo(flowFile, baos);
    final String message = new String(baos.toByteArray(), charset);

    final AmazonSNSClient client = getClient();
    final PublishRequest request = new PublishRequest();
    request.setMessage(message);

    if (context.getProperty(USE_JSON_STRUCTURE).asBoolean()) {
        request.setMessageStructure("json");
    }

    final String arn = context.getProperty(ARN).evaluateAttributeExpressions(flowFile).getValue();
    final String arnType = context.getProperty(ARN_TYPE).getValue();
    if (arnType.equalsIgnoreCase(ARN_TYPE_TOPIC.getValue())) {
        request.setTopicArn(arn);
    } else {
        request.setTargetArn(arn);
    }

    final String subject = context.getProperty(SUBJECT).evaluateAttributeExpressions(flowFile).getValue();
    if (subject != null) {
        request.setSubject(subject);
    }

    for (final Map.Entry<PropertyDescriptor, String> entry : context.getProperties().entrySet()) {
        if (entry.getKey().isDynamic() && !StringUtils.isEmpty(entry.getValue())) {
            final MessageAttributeValue value = new MessageAttributeValue();
            value.setStringValue(
                    context.getProperty(entry.getKey()).evaluateAttributeExpressions(flowFile).getValue());
            value.setDataType("String");
            request.addMessageAttributesEntry(entry.getKey().getName(), value);
        }
    }

    try {
        client.publish(request);
        session.transfer(flowFile, REL_SUCCESS);
        session.getProvenanceReporter().send(flowFile, arn);
        getLogger().info("Successfully published notification for {}", new Object[] { flowFile });
    } catch (final Exception e) {
        getLogger().error("Failed to publish Amazon SNS message for {} due to {}",
                new Object[] { flowFile, e });
        flowFile = session.penalize(flowFile);
        session.transfer(flowFile, REL_FAILURE);
    }
}

From source file:Servlet.WorkPool.java

License:Open Source License

public void run() {

    System.out.println("===========================================");
    System.out.println("Welcome to the AWS Java SDK!");
    System.out.println("===========================================");

    try {//from  w w w .java  2  s .c  o  m
        init();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Send a message
    /*
     * System.out.println("Sending a message to MyQueue.\n");
     * sqs.sendMessage(new SendMessageRequest() .withQueueUrl(myQueueUrl)
     * .withMessageBody("This is my message text."));
     */
    /*
     * List<Message> messages =getMessage(myQueueUrl);
     * deleteMessage(myQueueUrl,messages); getMessage(myQueueUrl);
     */

    PublishRequest publishRequest;

    while (true) {
        // System.out.println("Receiving messages from MyQueue.\n");
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
        List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
        for (Message message : messages) {

            String result = message.getBody();
            JSONObject jo;
            try {
                jo = new JSONObject(result);
                String res = sendPost((String) jo.get("text"));
                //System.out.println((String) jo.get("text"));
                //System.out.println((String) jo.get("time"));
                publishRequest = new PublishRequest(topicArn, (String) jo.get("text"));
                if (res.equals(""))
                    res = "error";
                publishRequest.addMessageAttributesEntry("senti",
                        new MessageAttributeValue().withDataType("String").withStringValue(res));

                /*
                 * publishRequest.addMessageAttributesEntry( "text", new
                 * MessageAttributeValue().withDataType("String")
                 * .withStringValue( (String)jo.get("text")));
                 */
                publishRequest.addMessageAttributesEntry("lon", new MessageAttributeValue()
                        .withDataType("String").withStringValue((String) jo.get("lon")));
                publishRequest.addMessageAttributesEntry("lat", new MessageAttributeValue()
                        .withDataType("String").withStringValue((String) jo.get("lat")));
                publishRequest.addMessageAttributesEntry("time", new MessageAttributeValue()
                        .withDataType("String").withStringValue((String) jo.get("time")));
                publishRequest.addMessageAttributesEntry("id", new MessageAttributeValue()
                        .withDataType("String").withStringValue((String) jo.get("id")));
                PublishResult publishResult = sns.publish(publishRequest);
                deleteMessage(myQueueUrl, message);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}