@Override public void encode(ActiveMQBuffer buffer, Message record) { used = true; try { Long delay = record.getLongProperty("delay"); if (delay == null || delay.longValue() <= 0) { logger.infof("encode message %d, caller=%s", record.getMessageID(), Thread.currentThread().getName()); } else { logger.infof("sleep %d ms before encode message %d, caller=%s", delay.longValue(), record.getMessageID(), Thread.currentThread().getName()); Thread.sleep(delay.longValue()); } } catch (InterruptedException e) { // it's ok } persister.encode(buffer, record); }