Example usage for org.springframework.amqp.core MessageProperties CONTENT_TYPE_SERIALIZED_OBJECT

List of usage examples for org.springframework.amqp.core MessageProperties CONTENT_TYPE_SERIALIZED_OBJECT

Introduction

In this page you can find the example usage for org.springframework.amqp.core MessageProperties CONTENT_TYPE_SERIALIZED_OBJECT.

Prototype

String CONTENT_TYPE_SERIALIZED_OBJECT

To view the source code for org.springframework.amqp.core MessageProperties CONTENT_TYPE_SERIALIZED_OBJECT.

Click Source Link

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  ww w. j  a 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;//from w ww  . j  a  v a2  s .  c  o 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;/*from  w  w  w.  j  av a  2  s.  com*/
        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);

        }
    }
}