Я занимаюсь разницей между тем, как JMSlistener выбрал сообщение и JMSTimestamp (который отправил производитель). Когда я вычисляю разницу между этими двумя значениями. Результат - отрицательное значение. Мне было интересно, как может быть JMSTimestamp, установленный производителем, больше, чем время, затраченное потребителем.JMSTimestamp показывает больше времени, чем текущее время для нескольких транзакций
Может ли кто-нибудь помочь мне в этом?
Ниже приведен код слушателя меня вернуть
@Override
public void onMessage(Message message) {
try {
log.info("====Time taken by Listener to read::==="
+ (System.currentTimeMillis() - message
.getJMSTimestamp()) + " ms"); // I am getting negative value here
} catch (JMSException e) {
log.error("Error while reading the message", e.getMessage());
}
}
Большое спасибо Гэри. Но только несколько транзакций получают больше значения времени. – Pradeep
Это, скорее всего, будет, даже если часы находятся всего в нескольких миллисекундах друг от друга. Если, скажем, часы отправителя на 30 мс превышают часы приемника, и только транзит брокеру занимает 20 мс, появится сообщение, прибывшее за 10 мс до его отправки. Если это linux, вы можете сравнить время с 'date +% s% 3N', чтобы получить время в миллисекундах с эпохи. –