コード例 #1
0
        public SqsNotificationListener(
            SqsQueueBase queue,
            IMessageSerialisationRegister serialisationRegister,
            IMessageMonitor messagingMonitor,
            ILoggerFactory loggerFactory,
            Action <Exception, Amazon.SQS.Model.Message> onError = null,
            IMessageLock messageLock = null,
            IMessageBackoffStrategy messageBackoffStrategy = null)
        {
            _queue            = queue;
            _messagingMonitor = messagingMonitor;
            onError           = onError ?? ((ex, message) => { });
            _log = loggerFactory.CreateLogger("JustSaying");

            _messageProcessingStrategy = new DefaultThrottledThroughput(_messagingMonitor);
            _messageHandlerWrapper     = new MessageHandlerWrapper(messageLock, _messagingMonitor);
            _messageDispatcher         = new MessageDispatcher(queue, serialisationRegister, messagingMonitor, onError, _handlerMap, loggerFactory, messageBackoffStrategy);

            Subscribers = new Collection <ISubscriber>();

            if (messageBackoffStrategy != null)
            {
                _requestMessageAttributeNames.Add(MessageSystemAttributeName.ApproximateReceiveCount);
            }
        }
コード例 #2
0
 public ExactlyOnceHandler(IHandler <T> inner, IMessageLock messageLock, int timeOut, string handlerName)
 {
     _inner       = inner;
     _messageLock = messageLock;
     _timeOut     = timeOut;
     _handlerName = handlerName;
 }
コード例 #3
0
        public BlockingMessageLock(IMessageLock inner)
        {
            if (inner == null)
            {
                throw new ArgumentNullException(nameof(inner));
            }

            Inner = inner;
        }
コード例 #4
0
 public SqsNotificationListener(SqsQueueBase queue, IMessageSerialisationRegister serialisationRegister, IMessageMonitor messagingMonitor, Action <Exception, Amazon.SQS.Model.Message> onError = null, IMessageLock messageLock = null)
 {
     _queue = queue;
     _serialisationRegister = serialisationRegister;
     _messagingMonitor      = messagingMonitor;
     _onError  = onError ?? ((ex, message) => { });
     _handlers = new Dictionary <Type, List <Func <Message, bool> > >();
     _messageProcessingStrategy = new MaximumThroughput();
     _messageLock = messageLock;
 }
コード例 #5
0
        public SqsNotificationListener(
            SqsQueueBase queue,
            IMessageSerialisationRegister serialisationRegister,
            IMessageMonitor messagingMonitor,
            Action <Exception, Amazon.SQS.Model.Message> onError = null,
            IMessageLock messageLock = null)
        {
            _queue            = queue;
            _messagingMonitor = messagingMonitor;
            onError           = onError ?? ((ex, message) => { });

            _messageProcessingStrategy = new DefaultThrottledThroughput(_messagingMonitor);
            _messageHandlerWrapper     = new MessageHandlerWrapper(messageLock, _messagingMonitor);
            _messageDispatcher         = new MessageDispatcher(queue, serialisationRegister, messagingMonitor, onError, _handlerMap);

            Subscribers = new Collection <ISubscriber>();
        }
コード例 #6
0
 public IMayWantOptionalSettings WithMessageLockStoreOf(IMessageLock messageLock)
 {
     Bus.MessageLock = messageLock;
     return(this);
 }
コード例 #7
0
 public IMayWantOptionalSettings WithMessageLockStoreOf(IMessageLock messageLock)
 {
     Bus.MessageLock = new BlockingMessageLock(messageLock);
     return(this);
 }
コード例 #8
0
 public MessageHandlerWrapper(IMessageLock messageLock, IMessageMonitor messagingMonitor)
 {
     _messageLock      = messageLock;
     _messagingMonitor = messagingMonitor;
 }
コード例 #9
0
 public ExactlyOnceHandler(IHandler <T> inner, IMessageLock messageLock, int timeOut)
 {
     _inner       = inner;
     _messageLock = messageLock;
     _timeOut     = timeOut;
 }