Search in sources :

Example 6 with RabbitMQMessage

use of org.apache.axis2.transport.rabbitmq.RabbitMQMessage in project wso2-axis2-transports by wso2.

the class RabbitMQSender method sendOverAMQP.

/**
 * Perform actual sending of the AMQP message
 */
private void sendOverAMQP(RabbitMQConnectionFactory factory, MessageContext msgContext, String targetEPR) throws AxisFault {
    try {
        RabbitMQMessage message = new RabbitMQMessage(msgContext);
        Hashtable<String, String> epProperties = BaseUtils.getEPRProperties(targetEPR);
        if (!StringUtils.isEmpty(epProperties.get(RabbitMQConstants.REPLY_TO_NAME))) {
            // request-response scenario
            RabbitMQRPCMessageSender sender = new RabbitMQRPCMessageSender(factory, targetEPR, epProperties);
            RabbitMQMessage responseMessage = sender.send(message, msgContext);
            MessageContext responseMsgCtx = createResponseMessageContext(msgContext);
            RabbitMQUtils.setSOAPEnvelope(responseMessage, responseMsgCtx, responseMessage.getContentType());
            handleIncomingMessage(responseMsgCtx, RabbitMQUtils.getTransportHeaders(responseMessage), responseMessage.getSoapAction(), responseMessage.getContentType());
        } else {
            // Basic out only publish
            RabbitMQMessageSender sender = new RabbitMQMessageSender(factory, targetEPR, epProperties);
            sender.send(message, msgContext);
        }
    } catch (AxisRabbitMQException e) {
        handleException("Error occurred while sending message out", e);
    } catch (IOException e) {
        handleException("Error occurred while sending message out", e);
    }
}
Also used : RabbitMQRPCMessageSender(org.apache.axis2.transport.rabbitmq.rpc.RabbitMQRPCMessageSender) AxisRabbitMQException(org.apache.axis2.transport.rabbitmq.utils.AxisRabbitMQException) MessageContext(org.apache.axis2.context.MessageContext) IOException(java.io.IOException)

Example 7 with RabbitMQMessage

use of org.apache.axis2.transport.rabbitmq.RabbitMQMessage in project wso2-axis2-transports by wso2.

the class RabbitMQUtils method setSOAPEnvelope.

public static void setSOAPEnvelope(RabbitMQMessage message, MessageContext msgContext, String contentType) throws AxisFault {
    int index = contentType.indexOf(';');
    String type = index > 0 ? contentType.substring(0, index) : contentType;
    Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
    if (builder == null) {
        if (log.isDebugEnabled()) {
            log.debug("No message builder found for type '" + type + "'. Falling back to SOAP.");
        }
        builder = new SOAPBuilder();
    }
    OMElement documentElement;
    String charSetEnc = null;
    try {
        if (contentType != null) {
            charSetEnc = new ContentType(contentType).getParameter("charset");
        }
    } catch (ParseException ex) {
        log.debug("Parse error", ex);
    }
    msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
    documentElement = builder.processDocument(new ByteArrayInputStream(message.getBody()), contentType, msgContext);
    msgContext.setEnvelope(TransportUtils.createSOAPEnvelope(documentElement));
}
Also used : ContentType(javax.mail.internet.ContentType) ByteArrayInputStream(java.io.ByteArrayInputStream) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) Builder(org.apache.axis2.builder.Builder) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) OMElement(org.apache.axiom.om.OMElement) LongString(com.rabbitmq.client.LongString) ParseException(javax.mail.internet.ParseException)

Aggregations

AMQP (com.rabbitmq.client.AMQP)3 IOException (java.io.IOException)3 AxisFault (org.apache.axis2.AxisFault)3 AxisRabbitMQException (org.apache.axis2.transport.rabbitmq.utils.AxisRabbitMQException)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 UnsupportedCharsetException (java.nio.charset.UnsupportedCharsetException)2 OMOutputFormat (org.apache.axiom.om.OMOutputFormat)2 MessageContext (org.apache.axis2.context.MessageContext)2 MessageFormatter (org.apache.axis2.transport.MessageFormatter)2 RabbitMQMessage (org.apache.axis2.transport.rabbitmq.RabbitMQMessage)2 ConsumerCancelledException (com.rabbitmq.client.ConsumerCancelledException)1 LongString (com.rabbitmq.client.LongString)1 QueueingConsumer (com.rabbitmq.client.QueueingConsumer)1 ShutdownSignalException (com.rabbitmq.client.ShutdownSignalException)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ContentType (javax.mail.internet.ContentType)1 ParseException (javax.mail.internet.ParseException)1 OMElement (org.apache.axiom.om.OMElement)1 Builder (org.apache.axis2.builder.Builder)1 SOAPBuilder (org.apache.axis2.builder.SOAPBuilder)1