public virtual ISqlTransactionalOutboxItem <TUniqueIdentifier> CreateNewOutboxItem( string publishingTarget, TPayload publishingPayload, string?fifoGroupingIdentifier = null ) { //Validate key required values that are always user provided in this one place... publishingTarget.AssertNotNullOrWhiteSpace(nameof(publishingTarget)); publishingPayload.AssertNotNull(nameof(publishingPayload)); //Serialize the Payload for Storage with our Outbox Item... var serializedPayload = PayloadSerializer.SerializePayload(publishingPayload); //Now we can create the fully validated Outbox Item var outboxItem = new OutboxProcessingItem <TUniqueIdentifier>() { //Initialize Internal Variables UniqueIdentifier = UniqueIdentifierFactory.CreateUniqueIdentifier(), Status = OutboxItemStatus.Pending, FifoGroupingIdentifier = fifoGroupingIdentifier, PublishAttempts = 0, CreatedDateTimeUtc = DateTimeOffset.UtcNow, //Initialize client provided details PublishTarget = publishingTarget, Payload = serializedPayload }; return(outboxItem); }
public virtual ISqlTransactionalOutboxItem <TUniqueIdentifier> CreateExistingOutboxItem( string uniqueIdentifier, DateTimeOffset createdDateTimeUtc, string status, string fifoGroupingIdentifier, int publishAttempts, string publishTarget, string serializedPayload ) { uniqueIdentifier.AssertNotNullOrWhiteSpace(nameof(uniqueIdentifier)); return(CreateExistingOutboxItem( UniqueIdentifierFactory.ParseUniqueIdentifier(uniqueIdentifier), createdDateTimeUtc, status, fifoGroupingIdentifier, publishAttempts, publishTarget, serializedPayload )); }