Example usage for org.springframework.amqp.core MessagePropertiesBuilder newInstance

List of usage examples for org.springframework.amqp.core MessagePropertiesBuilder newInstance

Introduction

In this page you can find the example usage for org.springframework.amqp.core MessagePropertiesBuilder newInstance.

Prototype

public static MessagePropertiesBuilder newInstance() 

Source Link

Document

Returns a builder with an initial set of properties.

Usage

From source file:com.francetelecom.clara.cloud.paas.activation.v1.async.listener.amqp.UnexpectedErrorMessageListener.java

@Override
public void onMessage(Message message) {

    log.debug("message received : " + message);
    TaskStatus payload = (TaskStatus) SerializationUtils.deserialize(message.getBody());
    String communicationId = new String(message.getMessageProperties().getCorrelationId());

    try {/*from w  ww . ja  v  a  2 s. c o  m*/
        log.error("unexpected error occured during task polling process; msg details : " + payload);
    } catch (Exception e) {
        log.error("Exception occured during task polling process; details : " + e);
    }

    MessageProperties props = MessagePropertiesBuilder.newInstance()
            .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
            .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes()).build();
    Message error = MessageBuilder
            .withBody(SerializationUtils
                    .serialize(new UnexpectedException("Unexpected error with content: " + payload)))
            .andProperties(props).build();
    amqpErrorTemplate.send(error);

}

From source file:com.francetelecom.clara.cloud.paas.activation.v1.async.AmqpTaskHandler.java

@Override
public TaskStatus handleRequest(R request, final String communicationId) {
    log.trace("(0) handleRequest {}", request.toString());
    // callback delegation
    final TaskStatus taskStatus = taskHandlerCallback.handleRequest(request);

    if (taskStatus.isComplete()) {
        log.trace("(1) task is complete. no need to poll. Sends task Status to reply queue");
        MessageProperties props;/*  w ww . ja  va2s  .co  m*/
        props = MessagePropertiesBuilder.newInstance()
                .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
                .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes())
                .build();
        Message message = MessageBuilder.withBody(SerializationUtils.serialize(taskStatus)).andProperties(props)
                .build();
        amqpReplyTemplate.send(message);
        log.trace("(2) message sent to reply queue");
    } else {
        log.trace(
                "(1) handleRequest status : {} send in amqp queue a 'retry' request used to poll backend service for",
                taskStatus.toString());
        MessageProperties props;
        props = MessagePropertiesBuilder.newInstance()
                .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
                .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes())
                .setHeader("retryCount", 1).build();
        Message message = MessageBuilder.withBody(SerializationUtils.serialize(taskStatus)).andProperties(props)
                .build();
        amqpRequestTemplate.send(message);
        log.trace("(2) handleRequest send amqp message ended");

    }

    return taskStatus;
}

From source file:com.francetelecom.clara.cloud.paas.activation.v1.async.AmqpTaskHandler.java

@Override
public void onTaskPolled(TaskStatus taskStatus, final RetryContext retryContext, final String communicationId) {
    log.trace("onTaskPolled taskStatus={}", taskStatus.toString());
    // callback delegation
    final TaskStatus t = taskHandlerCallback.onTaskPolled(taskStatus);
    log.trace("[after] onTaskPolled taskStatus={}", t.toString());
    if (t.isComplete()) {
        log.trace("task is complete. no need to keep polling. Sends task Status to reply queue");
        MessageProperties props;//  w  ww .  j  a  v a2s . c  om
        props = MessagePropertiesBuilder.newInstance()
                .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
                .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes())
                .build();
        Message message = MessageBuilder.withBody(SerializationUtils.serialize(t)).andProperties(props).build();
        amqpReplyTemplate.send(message);
    }

    else {
        if (!retryPolicy.canRetry(retryContext.getRetryCount())) {
            // max retry count exceeded. no need to keep polling. Sends
            // Exception to error queue
            log.warn("Max retry count reached: " + retryPolicy.getMaxAttempts());
            MessageProperties props = MessagePropertiesBuilder.newInstance()
                    .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
                    .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes())
                    .build();
            Message message = MessageBuilder
                    .withBody(SerializationUtils.serialize(new MaxRetryCountExceededException(
                            "Max retry count reached : " + retryPolicy.getMaxAttempts())))
                    .andProperties(props).build();
            amqpErrorTemplate.send(message);
        } else {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                log.warn("Thread sleeping before sending message back to Request queue has been interrupted.");
            }
            log.trace("task is not complete. Must keep polling. Sends task Status to request queue");
            MessageProperties props = MessagePropertiesBuilder.newInstance()
                    .setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
                    .setMessageId(UUID.randomUUID().toString()).setCorrelationId(communicationId.getBytes())
                    .setHeader("retryCount", retryContext.getRetryCount() + 1).build();
            Message message = MessageBuilder.withBody(SerializationUtils.serialize(t)).andProperties(props)
                    .build();
            amqpRequestTemplate.send(message);

        }
    }
}