Search in sources :

Example 1 with ByteArray

use of org.apache.camel.component.msmq.native_support.ByteArray in project wso2-axis2-transports by wso2.

the class MSMQCamelClient method receive.

public Message receive(int timeOut) throws AxisFault {
    try {
        Message message = new Message("");
        MsmqMessage msmqMessage = new MsmqMessage();
        int initsize = 1;
        boolean cont = true;
        ByteArray recvbuffer = new ByteArray(initsize);
        msmqMessage.setMsgBody(recvbuffer.cast());
        msmqMessage.setBodySize(initsize);
        while (cont) {
            try {
                msmqQueue.receiveMessage(msmqMessage, -1);
                cont = false;
            } catch (RuntimeException ex) {
                if (ex.getMessage().equals("Message body too big")) {
                    initsize += 5;
                    recvbuffer = new ByteArray(initsize);
                    msmqMessage.setMsgBody(recvbuffer.cast());
                    msmqMessage.setBodySize(initsize);
                } else {
                    throw ex;
                }
            }
        }
        Long messageSize = Long.valueOf(msmqMessage.getBodySize());
        byte[] buffer = new byte[messageSize.intValue()];
        for (int i = 0; i < messageSize; ++i) {
            buffer[i] = recvbuffer.getitem(i);
        }
        message.setBody(new String(buffer).getBytes(Message._encoding));
        byte[] cid = new byte[msmq_native_supportConstants.PROPID_M_CORRELATIONID_SIZE];
        message.setCorrelationId(cid);
        message.setLabel(CtypeMapClazz.getCtypeNameById(msmqMessage.getAppSpecific()));
        if (log.isDebugEnabled()) {
            log.info("Message Body size" + msmqMessage.getBodySize());
        }
        return (msmqMessage.getBodySize() == 0 || msmqMessage.getBodySize() == 1) ? null : message;
    } catch (UnsupportedEncodingException e) {
        log.error("Error while Reading the message received via destination", e);
        throw new AxisFault("Error while Reading the message received via destination", e);
    }
}
Also used : AxisFault(org.apache.axis2.AxisFault) MsmqMessage(org.apache.camel.component.msmq.native_support.MsmqMessage) ByteArray(org.apache.camel.component.msmq.native_support.ByteArray) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MsmqMessage(org.apache.camel.component.msmq.native_support.MsmqMessage)

Example 2 with ByteArray

use of org.apache.camel.component.msmq.native_support.ByteArray in project wso2-axis2-transports by wso2.

the class MSMQCamelClient method send.

public void send(Message message) throws AxisFault {
    try {
        MsmqMessage msg = new MsmqMessage();
        String payload = message.getBodyAsString();
        ByteArray sendbuffer = new ByteArray(payload.length());
        msg.setMsgBody(sendbuffer.cast());
        msg.setBodySize(payload.length());
        for (int i = 0; i < payload.length(); ++i) {
            sendbuffer.setitem(i, payload.getBytes()[i]);
        }
        msg.setCorrelationId(message.getCorrelationId());
        msg.setAppSpecifc(CtypeMapClazz.getIdByName(message.getLabel()));
        msmqQueue.sendMessage(msg);
    } catch (Exception e) {
        log.error("Error while sending message to destination", e);
        throw new AxisFault("Error while sending message to destination", e);
    }
}
Also used : AxisFault(org.apache.axis2.AxisFault) ByteArray(org.apache.camel.component.msmq.native_support.ByteArray) MsmqMessage(org.apache.camel.component.msmq.native_support.MsmqMessage) CharacterCodingException(java.nio.charset.CharacterCodingException) UnsupportedEncodingException(java.io.UnsupportedEncodingException)

Aggregations

UnsupportedEncodingException (java.io.UnsupportedEncodingException)2 AxisFault (org.apache.axis2.AxisFault)2 ByteArray (org.apache.camel.component.msmq.native_support.ByteArray)2 MsmqMessage (org.apache.camel.component.msmq.native_support.MsmqMessage)2 CharacterCodingException (java.nio.charset.CharacterCodingException)1