use of com.swiftmq.jms.smqp.v600.ProduceMessageReply in project swiftmq-client by iitsoftware.
the class MessageProducerImpl method processSend.
void processSend(int producerId, Message message) throws JMSException {
boolean transacted = mySession.getTransacted();
MessageImpl msg = (MessageImpl) message;
if (transacted) {
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend, storeTransactedMessage");
}
mySession.storeTransactedMessage(this, msg);
} else {
nSend++;
ProduceMessageReply reply = null;
boolean replyRequired = nSend == replyThreshold || msg.getJMSDeliveryMode() == DeliveryMode.PERSISTENT && !ASYNC_SEND;
try {
ProduceMessageRequest request = null;
if (!replyRequired) {
dbos.rewind();
msg.writeContent(dbos);
byte[] b = new byte[dbos.getCount()];
System.arraycopy(dbos.getBuffer(), 0, b, 0, b.length);
request = new ProduceMessageRequest(this, mySession.dispatchId, producerId, null, b);
} else
request = new ProduceMessageRequest(this, mySession.dispatchId, producerId, msg, null);
request.setReplyRequired(replyRequired);
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend ...");
}
reply = (ProduceMessageReply) requestRegistry.request(request);
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend done, reply=" + reply);
}
} catch (Exception e) {
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend, exception=" + e);
}
e.printStackTrace();
throw ExceptionConverter.convert(e);
}
if (replyRequired) {
if (reply == null)
throw new JMSException("Request was cancelled (reply == null)");
nSend = 0;
if (!reply.isOk()) {
throw ExceptionConverter.convert(reply.getException());
}
currentDelay = reply.getDelay();
if (currentDelay > 0) {
try {
Thread.sleep(currentDelay);
} catch (Exception ignored) {
}
}
}
}
// fix 1.2
msg.reset();
}
use of com.swiftmq.jms.smqp.v600.ProduceMessageReply in project swiftmq-client by iitsoftware.
the class MessageProducerImpl method processSend.
void processSend(int producerId, Message message) throws JMSException {
boolean transacted = mySession.getTransacted();
MessageImpl msg = (MessageImpl) message;
if (transacted) {
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend, storeTransactedMessage");
}
mySession.storeTransactedMessage(this, msg);
} else {
nSend++;
ProduceMessageReply reply = null;
boolean replyRequired = nSend == replyThreshold || msg.getJMSDeliveryMode() == DeliveryMode.PERSISTENT && !ASYNC_SEND;
try {
ProduceMessageRequest request = null;
if (!replyRequired) {
dbos.rewind();
msg.writeContent(dbos);
byte[] b = new byte[dbos.getCount()];
System.arraycopy(dbos.getBuffer(), 0, b, 0, b.length);
request = new ProduceMessageRequest(this, mySession.dispatchId, producerId, null, b);
} else
request = new ProduceMessageRequest(this, mySession.dispatchId, producerId, msg, null);
request.setReplyRequired(replyRequired);
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend ...");
}
reply = (ProduceMessageReply) requestRegistry.request(request);
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend done, reply=" + reply);
}
} catch (Exception e) {
if (MessageTracker.enabled) {
MessageTracker.getInstance().track((MessageImpl) msg, new String[] { mySession.myConnection.toString(), mySession.toString(), toString() }, "processSend, exception=" + e);
}
e.printStackTrace();
throw ExceptionConverter.convert(e);
}
if (replyRequired) {
if (reply == null)
throw new JMSException("Request was cancelled (reply == null)");
nSend = 0;
if (!reply.isOk()) {
throw ExceptionConverter.convert(reply.getException());
}
currentDelay = reply.getDelay();
if (currentDelay > 0) {
try {
Thread.sleep(currentDelay);
} catch (Exception ignored) {
}
}
}
}
// fix 1.2
msg.reset();
}
Aggregations