示例#1
0
        /// <summary>
        /// Convenience method for adding an item easily to the Transactional Outbox using Default implementations (e.g. GUID identifier).
        /// This method assumes the current Transaction and associated Connection is valid and will use it but will not commit the Transaction!
        /// </summary>
        /// <typeparam name="TPayload"></typeparam>
        /// <param name="sqlTransaction"></param>
        /// <param name="outboxInsertionItems"></param>
        /// <returns></returns>
        public static async Task <List <ISqlTransactionalOutboxItem <Guid> > > AddTransactionalOutboxPendingItemListAsync <TPayload>(
            this SqlTransaction sqlTransaction,
            IEnumerable <ISqlTransactionalOutboxInsertionItem <TPayload> > outboxInsertionItems
            )
        {
            sqlTransaction.AssertSqlTransactionIsValid();

            //SAVE the Item to the Outbox...
            var outbox      = new DefaultSqlServerTransactionalOutbox <TPayload>(sqlTransaction);
            var outboxItems = await outbox
                              .InsertNewPendingOutboxItemsAsync(outboxInsertionItems)
                              .ConfigureAwait(false);

            return(outboxItems);
        }
示例#2
0
        /// <summary>
        /// Convenience method for adding an item easily to the Transactional Outbox using Default implementations (e.g. GUID identifier).
        /// This method assumes the current Transaction and associated Connection is valid and will use it but will not commit the Transaction!
        /// </summary>
        /// <typeparam name="TPayload"></typeparam>
        /// <param name="sqlTransaction"></param>
        /// <param name="publishTarget"></param>
        /// <param name="jsonPayload"></param>
        /// <param name="fifoGroupingIdentifier"></param>
        /// <returns></returns>
        public static async Task <ISqlTransactionalOutboxItem <Guid> > AddTransactionalOutboxPendingItemAsync <TPayload>(
            this SqlTransaction sqlTransaction,
            string publishTarget,
            TPayload payload,
            string fifoGroupingIdentifier = null
            )
        {
            sqlTransaction.AssertSqlTransactionIsValid();

            //SAVE the Item to the Outbox...
            var outbox     = new DefaultSqlServerTransactionalOutbox <TPayload>(sqlTransaction);
            var outboxItem = await outbox.InsertNewPendingOutboxItemAsync(
                publishingTarget : publishTarget,
                publishingPayload : payload,
                fifoGroupingIdentifier : fifoGroupingIdentifier
                ).ConfigureAwait(false);

            return(outboxItem);
        }