50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace StellaOps.Scheduler.Queue.Redis;
|
|
|
|
internal interface IRedisSchedulerQueuePayload<TMessage>
|
|
{
|
|
string QueueName { get; }
|
|
|
|
string GetIdempotencyKey(TMessage message);
|
|
|
|
string Serialize(TMessage message);
|
|
|
|
TMessage Deserialize(string payload);
|
|
|
|
string GetRunId(TMessage message);
|
|
|
|
string GetTenantId(TMessage message);
|
|
|
|
string? GetScheduleId(TMessage message);
|
|
|
|
string? GetSegmentId(TMessage message);
|
|
|
|
string? GetCorrelationId(TMessage message);
|
|
|
|
IReadOnlyDictionary<string, string>? GetAttributes(TMessage message);
|
|
|
|
// HLC fields for deterministic ordering (SPRINT_20260105_002_002)
|
|
// Default implementations return null for backward compatibility
|
|
|
|
/// <summary>
|
|
/// Gets the HLC timestamp string for deterministic ordering.
|
|
/// </summary>
|
|
string? GetTHlc(TMessage message) => null;
|
|
|
|
/// <summary>
|
|
/// Gets the chain link (hex-encoded SHA-256) proving sequence position.
|
|
/// </summary>
|
|
string? GetChainLink(TMessage message) => null;
|
|
|
|
/// <summary>
|
|
/// Gets the previous chain link (hex-encoded, null for first entry).
|
|
/// </summary>
|
|
string? GetPrevChainLink(TMessage message) => null;
|
|
|
|
/// <summary>
|
|
/// Gets the payload hash (hex-encoded SHA-256).
|
|
/// </summary>
|
|
string? GetPayloadHash(TMessage message) => null;
|
|
}
|