public void onMessage(Message message) { ObjectMessage om = (ObjectMessage) message; try { DeleteStudyOrder order = (DeleteStudyOrder) om.getObject(); log.info("Start processing " + order); try { process(order); log.info("Finished processing " + order); } catch (Exception e) { order.setThrowable(e); final int failureCount = order.getFailureCount() + 1; order.setFailureCount(failureCount); final long delay = retryIntervalls.getIntervall(failureCount); if (delay == -1L) { log.error("Give up to process " + order, e); jmsDelegate.fail(moveFilesOfStudyQueueName, order); } else { log.warn("Failed to process " + order + ". Scheduling retry.", e); jmsDelegate.queue( moveFilesOfStudyQueueName, order, 0, System.currentTimeMillis() + delay); } } } catch (JMSException e) { log.error("jms error during processing message: " + message, e); } catch (Throwable e) { log.error("unexpected error during processing message: " + message, e); } }
protected void schedule(DeleteStudyOrder order, long scheduledTime) throws Exception { if (srcFsGroup == null || destFsGroup == null) { String msg = "FileMove service is disabled! Set SourceFileSystemGroupID and DestinationFileSystemGroupID to enable it."; log.info(msg); throw new RuntimeException(msg); } else if ("ERROR".equals(getUsableDiskSpaceStringOnDest())) { String msg = "UsableDiskSpaceStringOnDest reports an error! Scheduling Move Order cancelled! Please check DestinationFileSystemGroupID configuration!"; log.error(msg); throw new RuntimeException(msg); } else { if (log.isInfoEnabled()) { String scheduledTimeStr = scheduledTime > 0 ? new Date(scheduledTime).toString() : "now"; log.info( "Scheduling job [" + order + "] at " + scheduledTimeStr + ". Retry times: " + order.getFailureCount()); } jmsDelegate.queue(moveFilesOfStudyQueueName, order, Message.DEFAULT_PRIORITY, scheduledTime); } }