Tune Valkey poll: 10-30s window (fits within 60s gateway timeout)
QueueWaitTimeoutSeconds: 5 → 10 (base) Randomization: [base, 2×base] → [base, 3×base] = random 10-30s When Pub/Sub is alive: instant delivery (no change). When Pub/Sub is dead: consumer wakes in 10-30s via semaphore timeout, reads pending + new messages. 30s worst case < 60s gateway timeout. Load: 30 services × 1 poll per random(10-30s) = ~1.5 polls/sec. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -53,5 +53,5 @@ public class ValkeyTransportOptions
|
||||
/// Configurable via compose env var <c>VALKEY_QUEUE_WAIT_TIMEOUT</c>.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public int QueueWaitTimeoutSeconds { get; set; } = 5;
|
||||
public int QueueWaitTimeoutSeconds { get; set; } = 10;
|
||||
}
|
||||
|
||||
@@ -468,7 +468,7 @@ public sealed class ValkeyMessageQueue<TMessage> : IMessageQueue<TMessage>, INot
|
||||
var configuredSeconds = _transportOptions.QueueWaitTimeoutSeconds;
|
||||
var effectiveTimeout = configuredSeconds <= 0
|
||||
? Timeout.InfiniteTimeSpan
|
||||
: TimeSpan.FromSeconds(configuredSeconds + Random.Shared.Next(0, configuredSeconds));
|
||||
: TimeSpan.FromSeconds(configuredSeconds + Random.Shared.Next(0, 2 * configuredSeconds));
|
||||
|
||||
// Wait for a pub/sub signal or timeout (fallback for missed notifications).
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user