From bbebdf5bac604f8308c6f387c55fd8a58cab73a6 Mon Sep 17 00:00:00 2001 From: Liu Ke <56467036+scrapstation@users.noreply.github.com> Date: Wed, 18 Mar 2026 14:11:51 +0000 Subject: [PATCH 1/4] fix: rabbitmq jobQueue expiration parameter format --- .../Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 1e2280b78a..25b840d073 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -179,7 +179,7 @@ public class JobQueue : IJobQueue if (delay.HasValue) { routingKey = QueueConfiguration.DelayedQueueName; - basicProperties.Expiration = delay.Value.TotalMilliseconds.ToString(CultureInfo.InvariantCulture); + basicProperties.Expiration = ((long)delay.Value.TotalMilliseconds).ToString(CultureInfo.InvariantCulture); } if (ChannelAccessor != null) From 817066b097cc2e4ee30ea2601c89c2f36b5dc8b2 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 Mar 2026 09:23:28 +0800 Subject: [PATCH 2/4] fix: use ceiling rounding for RabbitMQ message expiration TTL --- .../Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 25b840d073..7f302efded 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -179,7 +179,7 @@ public class JobQueue : IJobQueue if (delay.HasValue) { routingKey = QueueConfiguration.DelayedQueueName; - basicProperties.Expiration = ((long)delay.Value.TotalMilliseconds).ToString(CultureInfo.InvariantCulture); + basicProperties.Expiration = Math.Max(1, (long)Math.Ceiling(delay.Value.TotalMilliseconds)).ToString(CultureInfo.InvariantCulture); } if (ChannelAccessor != null) From cbb86f04c46f75f63983392a3840c5be0f8fd098 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 Mar 2026 09:28:48 +0800 Subject: [PATCH 3/4] fix: clamp RabbitMQ expiration TTL to 0 instead of 1 --- .../Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 7f302efded..4dbb705532 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -179,7 +179,7 @@ public class JobQueue : IJobQueue if (delay.HasValue) { routingKey = QueueConfiguration.DelayedQueueName; - basicProperties.Expiration = Math.Max(1, (long)Math.Ceiling(delay.Value.TotalMilliseconds)).ToString(CultureInfo.InvariantCulture); + basicProperties.Expiration = Math.Max(0, (long)Math.Ceiling(delay.Value.TotalMilliseconds)).ToString(CultureInfo.InvariantCulture); } if (ChannelAccessor != null) From 459d5e48036d939cad18ed2b5fd2d6cb5f536ec1 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 Mar 2026 09:34:26 +0800 Subject: [PATCH 4/4] fix: skip delayed queue when delay is zero or negative --- .../Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 4dbb705532..ddc2613b47 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -176,10 +176,10 @@ public class JobQueue : IJobQueue CorrelationId = CorrelationIdProvider.Get() }; - if (delay.HasValue) + if (delay.HasValue && delay.Value > TimeSpan.Zero) { routingKey = QueueConfiguration.DelayedQueueName; - basicProperties.Expiration = Math.Max(0, (long)Math.Ceiling(delay.Value.TotalMilliseconds)).ToString(CultureInfo.InvariantCulture); + basicProperties.Expiration = ((long)Math.Ceiling(delay.Value.TotalMilliseconds)).ToString(CultureInfo.InvariantCulture); } if (ChannelAccessor != null)