예제 #1
0
        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);
        }
예제 #2
0
        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
                       ));
        }