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);
}
}
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);
}
}
Aggregations