diff --git a/src/Cap.Consistency/Infrastructure/ConsistencyMessage.cs b/src/Cap.Consistency/Infrastructure/ConsistencyMessage.cs new file mode 100644 index 0000000..edd8d97 --- /dev/null +++ b/src/Cap.Consistency/Infrastructure/ConsistencyMessage.cs @@ -0,0 +1,51 @@ +using System; + +namespace Cap.Consistency.Infrastructure +{ + /// + /// The default implementation of which uses a string as a primary key. + /// + public class ConsistencyMessage : ConsistencyMessage + { + /// + /// Initializes a new instance of . + /// + /// + /// The Id property is initialized to from a new GUID string value. + /// + public ConsistencyMessage() { + Id = Guid.NewGuid().ToString(); + SendTime = DateTime.Now; + UpdateTime = SendTime; + Status = MessageStatus.WaitForSend; + } + } + + /// + /// ConsistencyMessage consume status + /// + public enum MessageStatus + { + Deleted = 0, + WaitForSend = 1, + RollbackSuccessed = 3, + RollbackFailed = 4 + } + + /// + /// Represents a message in the consistency system + /// + /// The type used for the primary key for the message. + public class ConsistencyMessage where TKey : IEquatable + { + public virtual TKey Id { get; set; } + + public virtual DateTime SendTime { get; set; } + + public string Payload { get; set; } + + public MessageStatus Status { get; set; } + + public virtual DateTime? UpdateTime { get; set; } + } +} \ No newline at end of file diff --git a/src/Cap.Consistency/Infrastructure/DeliverMessage.cs b/src/Cap.Consistency/Infrastructure/DeliverMessage.cs index 28ab90e..af4072e 100644 --- a/src/Cap.Consistency/Infrastructure/DeliverMessage.cs +++ b/src/Cap.Consistency/Infrastructure/DeliverMessage.cs @@ -16,6 +16,8 @@ namespace Cap.Consistency.Infrastructure public byte[] Body { get; set; } + + public string Value { get; set; } } @@ -27,6 +29,5 @@ namespace Cap.Consistency.Infrastructure public long Offset { get; set; } public string MessageId { get; set; } - } } diff --git a/src/Cap.Consistency/Infrastructure/IConsumerExcutorSelector.cs b/src/Cap.Consistency/Infrastructure/IConsumerExcutorSelector.cs index 714a955..a8bf4bb 100644 --- a/src/Cap.Consistency/Infrastructure/IConsumerExcutorSelector.cs +++ b/src/Cap.Consistency/Infrastructure/IConsumerExcutorSelector.cs @@ -10,6 +10,6 @@ namespace Cap.Consistency.Infrastructure { IReadOnlyList SelectCandidates(TopicRouteContext context); - ConsumerExecutorDescriptor SelectBestCandidate(TopicRouteContext context, IReadOnlyList executeDescriptor); + ConsumerExecutorDescriptor SelectBestCandidate(string key, IReadOnlyList executeDescriptor); } }