Dreamine.Communication.Core 1.0.2
Dreamine.Communication.Core 통신 기능과 관련 API를 제공합니다.
로딩중...
검색중...
일치하는것 없음
QueuedOutboundMessage.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.Communication.Abstractions.Models;
2
4
13public sealed class QueuedOutboundMessage
14{
39 public QueuedOutboundMessage(MessageEnvelope message)
40 : this(message, DateTimeOffset.UtcNow, 0, null)
41 {
42 }
43
93 MessageEnvelope message,
94 DateTimeOffset enqueuedAt,
95 int attemptCount,
96 string? lastError)
97 {
98 Message = message ?? throw new ArgumentNullException(nameof(message));
99 EnqueuedAt = enqueuedAt;
100 AttemptCount = attemptCount;
101 LastError = lastError;
102 }
103
112 public MessageEnvelope Message { get; }
113
122 public DateTimeOffset EnqueuedAt { get; }
123
132 public int AttemptCount { get; }
133
142 public string? LastError { get; }
143
176 public bool IsExpired(TimeSpan? maxAge, DateTimeOffset now)
177 {
178 if (maxAge is null)
179 {
180 return false;
181 }
182
183 return now - EnqueuedAt > maxAge.Value;
184 }
185
218 public QueuedOutboundMessage WithFailure(Exception exception)
219 {
220 ArgumentNullException.ThrowIfNull(exception);
221
222 return new QueuedOutboundMessage(
223 Message,
225 AttemptCount + 1,
226 exception.Message);
227 }
228}
bool IsExpired(TimeSpan? maxAge, DateTimeOffset now)
QueuedOutboundMessage(MessageEnvelope message, DateTimeOffset enqueuedAt, int attemptCount, string? lastError)
QueuedOutboundMessage WithFailure(Exception exception)