Пример #1
0
 /// <summary>
 /// Creates <see cref="OutboxMessageProcessor"/>.
 /// </summary>
 /// <param name="uow">Unit of work.</param>
 /// <param name="sender">Data sender for external system.</param>
 /// <param name="logger">Logger.</param>
 public OutboxMessageProcessor(IOutboxUnitOfWork uow,
                               IOutboxSender sender,
                               ILogger <OutboxMessageProcessor> logger
                               )
 {
     _uow    = uow ?? throw new ArgumentNullException(nameof(uow));
     _sender = sender ?? throw new ArgumentNullException(nameof(sender));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Пример #2
0
        /// <summary>
        /// Add the outbox to be monitored by the OutboxModule
        /// </summary>
        /// <param name="messageBus"></param>
        /// <param name="outbox"></param>
        /// <returns></returns>
        public static IDisposable AddOutboxToBeMonitored(this IBusBase messageBus, IOutboxSender outbox)
        {
            Assert.ArgumentNotNull(messageBus, nameof(messageBus));
            Assert.ArgumentNotNull(outbox, nameof(outbox));

            var module = GetOutboxModuleOrThrow(messageBus);

            return(module.AddOutboxToBeMonitored(outbox));
        }
Пример #3
0
        public IDisposable AddOutboxToBeMonitored(IOutboxSender outbox)
        {
            Assert.ArgumentNotNull(outbox, nameof(outbox));

            // TODO: Need to check to ensure we don't contain this outbox already?
            var id = Interlocked.Increment(ref _outboxId);

            if (!_outboxes.TryAdd(id, outbox))
            {
                throw new Exception("Cannot add outbox to be monitored");
            }
            return(new Token(this, id));
        }
Пример #4
0
        public IDisposable AddOutboxToBeMonitored(IOutboxSender outbox)
        {
            Assert.ArgumentNotNull(outbox, nameof(outbox));

            return(Monitor.AddOutboxToBeMonitored(outbox));
        }
Пример #5
0
 public SendingOutbox(IOutbox <TPayload> outbox, IOutboxSender sender, IDisposable monitorToken = null)
 {
     _monitorToken = monitorToken;
     Outbox        = outbox;
     Sender        = sender;
 }
Пример #6
0
        /// <summary>
        /// Add the outbox to be monitored by the OutboxModule, if the module has been initialized.
        /// Otherwise do nothing
        /// </summary>
        /// <param name="messageBus"></param>
        /// <param name="outbox"></param>
        /// <returns></returns>
        public static IDisposable TryAddOutboxToBeMonitored(this IBusBase messageBus, IOutboxSender outbox)
        {
            Assert.ArgumentNotNull(messageBus, nameof(messageBus));
            Assert.ArgumentNotNull(outbox, nameof(outbox));

            var module = messageBus.Modules.Get <OutboxModule>();

            return(module?.AddOutboxToBeMonitored(outbox) ?? new DoNothingDisposable());
        }