From cd6b0c5bbf0cf5b0dc78fee1f9a994980aff52d1 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 12 Jul 2022 15:10:04 -0400 Subject: [PATCH] DelayHandler: Improve `Instant` handling --- .../springframework/integration/handler/DelayHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/DelayHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/DelayHandler.java index 20bd2d4d1e..8d515f270f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/DelayHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/DelayHandler.java @@ -16,6 +16,7 @@ package org.springframework.integration.handler; +import java.io.Serial; import java.io.Serializable; import java.time.Instant; import java.util.Collection; @@ -418,7 +419,7 @@ public class DelayHandler extends AbstractReplyProducingMessageHandler implement messageWrapper = (DelayedMessageWrapper) message.getPayload(); } else { - messageWrapper = new DelayedMessageWrapper(message, System.currentTimeMillis()); + messageWrapper = new DelayedMessageWrapper(message, Instant.now().toEpochMilli()); delayedMessage = getMessageBuilderFactory() .withPayload(messageWrapper) .copyHeaders(message.getHeaders()) @@ -427,7 +428,7 @@ public class DelayHandler extends AbstractReplyProducingMessageHandler implement } Runnable releaseTask = releaseTaskForMessage(delayedMessage); - Instant startTime = Instant.ofEpochMilli(messageWrapper.getRequestDate() + delay); + Instant startTime = Instant.ofEpochMilli(messageWrapper.getRequestDate()).plusMillis(delay); if (TransactionSynchronizationManager.isSynchronizationActive() && TransactionSynchronizationManager.isActualTransactionActive()) { @@ -637,6 +638,7 @@ public class DelayHandler extends AbstractReplyProducingMessageHandler implement public static final class DelayedMessageWrapper implements Serializable { + @Serial private static final long serialVersionUID = -4739802369074947045L; private final long requestDate;