/// <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)); }
/// <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)); }
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)); }
public IDisposable AddOutboxToBeMonitored(IOutboxSender outbox) { Assert.ArgumentNotNull(outbox, nameof(outbox)); return(Monitor.AddOutboxToBeMonitored(outbox)); }
public SendingOutbox(IOutbox <TPayload> outbox, IOutboxSender sender, IDisposable monitorToken = null) { _monitorToken = monitorToken; Outbox = outbox; Sender = sender; }
/// <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()); }