use of com.swiftmq.jms.smqp.v610.ProduceMessageRequest in project swiftmq-client by iitsoftware.
the class MessageProducerImpl method validate.
public void validate(Request request) throws ValidationException {
if (request instanceof ProduceMessageRequest) {
try {
ProduceMessageRequest r = (ProduceMessageRequest) request;
r.setDispatchId(mySession.dispatchId);
r.setQueueProducerId(producerId);
MessageImpl msg = SMQPUtil.getMessage(r);
Destination dest = msg.getJMSDestination();
// failover
if (dest instanceof TemporaryQueue || dest instanceof TemporaryTopic) {
r.setCancelledByValidator(true);
return;
}
msg.setBooleanProperty(MessageImpl.PROP_DOUBT_DUPLICATE, true);
if (r.getSingleMessage() != null)
r.setSingleMessage(msg);
else
r.setMessageCopy(SMQPUtil.toBytes(msg));
} catch (Exception e) {
e.printStackTrace();
throw new ValidationException(e.toString());
}
} else {
CloseProducerRequest r = (CloseProducerRequest) request;
r.setDispatchId(mySession.dispatchId);
r.setQueueProducerId(producerId);
}
}
use of com.swiftmq.jms.smqp.v610.ProduceMessageRequest 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) {
byte[] b;
synchronized (dbos) {
dbos.rewind();
msg.writeContent(dbos);
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.v610.ProduceMessageRequest 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) {
byte[] b;
synchronized (dbos) {
dbos.rewind();
msg.writeContent(dbos);
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.v610.ProduceMessageRequest 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.v610.ProduceMessageRequest in project swiftmq-client by iitsoftware.
the class MessageProducerImpl method validate.
public void validate(Request request) throws ValidationException {
if (request instanceof ProduceMessageRequest) {
try {
ProduceMessageRequest r = (ProduceMessageRequest) request;
r.setDispatchId(mySession.dispatchId);
r.setQueueProducerId(producerId);
MessageImpl msg = SMQPUtil.getMessage(r);
Destination dest = msg.getJMSDestination();
// failover
if (dest instanceof TemporaryQueue || dest instanceof TemporaryTopic) {
r.setCancelledByValidator(true);
return;
}
msg.setBooleanProperty(MessageImpl.PROP_DOUBT_DUPLICATE, true);
if (r.getSingleMessage() != null)
r.setSingleMessage(msg);
else
r.setMessageCopy(SMQPUtil.toBytes(msg));
} catch (Exception e) {
e.printStackTrace();
throw new ValidationException(e.toString());
}
} else {
CloseProducerRequest r = (CloseProducerRequest) request;
r.setDispatchId(mySession.dispatchId);
r.setQueueProducerId(producerId);
}
}
Aggregations