Ejemplo n.º 1
0
        public virtual void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
        {
            if (envelope == null)
            {
                throw new ArgumentNullException("envelope");
            }

            if (delivery != null && delivery.CurrentMessage == envelope.Message)
            {
                return;
            }

            var message = envelope.Message;

            if (message == envelope.State)
            {
                return;
            }

            var process = Process.GetCurrentProcess();
            var headers = message.Headers;

            headers[DispatchStamp] = SystemTime.UtcNow.ToIsoString();
            headers[OriginHost]    = Environment.MachineName.ToLowerInvariant();
            headers[ProcessName]   = process.ProcessName;
            headers[ProcessId]     = process.Id.ToString(CultureInfo.InvariantCulture);
        }
Ejemplo n.º 2
0
        public void DispatchToRegisteredResponseHandler(TResponse response, IDeliveryContext deliveryContext)
        {
            var correlationId = deliveryContext.Delivery.CorrelationId;

            if (string.IsNullOrEmpty(correlationId))
            {
                var message = string.Format(
                    "The requester {0}/{1} received a response with with no correlation id",
                    typeof(TRequest).Name,
                    typeof(TResponse).Name);

                throw new ChinchillaException(message);
            }

            Action <TResponse, IDeliveryContext> handler;

            if (!responders.TryGetValue(correlationId, out handler))
            {
                var message = string.Format(
                    "The requester {0}/{1} received a response with a correlation id that wasn't found " +
                    "in the responders dictionary.",
                    typeof(TRequest).Name,
                    typeof(TResponse).Name);

                throw new ChinchillaException(message);
            }

            handler(response, deliveryContext);
        }
Ejemplo n.º 3
0
        public void Consume(ConnectMessage message, IDeliveryContext deliveryContext)
        {
            var exchange = publisher.Exchange;

            var keys = message.Tickers.Select(
                t => string.Format("prices.{0}", t)).ToArray();

            var formattedKeys = string.Join(", ", keys);

            Console.WriteLine("Client Connected: {0} on {1} for {2}", message.ClientId, message.QueueName, formattedKeys);

            var binding = new Binding(
                new Queue(message.QueueName),
                new Exchange(exchange.Name, ExchangeType.Topic),
                keys);

            try
            {
                var topologyBuilder = new TopologyBuilder(publisher.ModelReference);
                topologyBuilder.Visit(binding);
            }
            catch
            {
                // TODO: Throw exception here to reject the message
            }
        }
Ejemplo n.º 4
0
        public void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
        {
            if (!this.cloud)
            {
                return;
            }

            if (envelope == null)
            {
                throw new ArgumentNullException("envelope");
            }

            if (delivery != null && delivery.CurrentMessage == envelope.Message)
            {
                return;
            }

            var message = envelope.Message;

            if (message == envelope.State)
            {
                return;
            }

            var headers = message.Headers;

            headers[ProviderNameHeader] = ProviderName;
            headers[FacilityNameHeader] = FacilityName;
            headers[MachineIdHeader]    = MachineId;
        }
Ejemplo n.º 5
0
        private void OnMessage(TimeoutMessage message, IDeliveryContext context)
        {
            Console.WriteLine("[Consumer] Received message: {0}", message.JobId);
            Thread.Sleep(8000);
            Console.WriteLine("[Consumer] Processed message: {0}", message.JobId);

            context.Reply(new TimeoutResponse());
        }
Ejemplo n.º 6
0
		public DefaultHandlerContext(IDeliveryContext delivery)
		{
			if (delivery == null)
				throw new ArgumentNullException("delivery");

			this.delivery = delivery;
			this.continueHandling = true;
		}
Ejemplo n.º 7
0
        private void OnMessage(TimeoutMessage message, IDeliveryContext context)
        {
            Console.WriteLine("[Consumer] Received message: {0}", message.JobId);
            Thread.Sleep(8000);
            Console.WriteLine("[Consumer] Processed message: {0}", message.JobId);

            context.Reply(new TimeoutResponse());
        }
		public virtual void Handle(IDeliveryContext delivery)
		{
			Log.Debug("Channel message received, routing message to configured handlers.");

			using (var context = new DefaultHandlerContext(delivery))
				this.routingTable.Route(context, delivery.CurrentMessage);

			Log.Verbose("Channel message payload successfully delivered to all configured recipients.");
		}
Ejemplo n.º 9
0
        public virtual void Handle(IDeliveryContext delivery)
        {
            Log.Debug("Channel message received, routing message to configured handlers.");

            using (var context = new DefaultHandlerContext(delivery))
                this.routingTable.Route(context, delivery.CurrentMessage);

            Log.Verbose("Channel message payload successfully delivered to all configured recipients.");
        }
 public void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
 {
     _telemetryClient.TrackEvent("SendMessage",
                                 new Dictionary <string, string>
     {
         { "ChannelGroup", _channel.CurrentConfiguration.GroupName },
         { "MessageType", envelope.Message.ActiveMessage.GetType().Name }
     });
 }
 public void AuditReceive(IDeliveryContext delivery)
 {
     _telemetryClient.TrackEvent("ReceiveMessage",
                                 new Dictionary <string, string>
     {
         { "ChannelGroup", _channel.CurrentConfiguration.GroupName },
         { "MessageType", delivery.CurrentMessage.ActiveMessage.GetType().Name }
     });
 }
Ejemplo n.º 12
0
        private void AuditReceive(IDeliveryContext context)
        {
            var messageId = context.CurrentMessage.MessageId;

            foreach (var auditor in this.auditors)
            {
                Log.Debug("Routing delivery for message '{0}' for inspection to auditor of type '{1}'.", messageId, auditor.GetType());
                auditor.AuditReceive(context);
            }
        }
		private void AuditReceive(IDeliveryContext context)
		{
			var messageId = context.CurrentMessage.MessageId;

			foreach (var auditor in this.auditors)
			{
				Log.Debug("Routing delivery for message '{0}' for inspection to auditor of type '{1}'.", messageId, auditor.GetType());
				auditor.AuditReceive(context);
			}
		}
Ejemplo n.º 14
0
        public DefaultHandlerContext(IDeliveryContext delivery)
        {
            if (delivery == null)
            {
                throw new ArgumentNullException("delivery");
            }

            this.delivery         = delivery;
            this.continueHandling = true;
        }
Ejemplo n.º 15
0
        public virtual void Handle(IDeliveryContext delivery)
        {
            Log.Debug("Creating new transaction scope associated for delivery.");
            using (var scope = new TransactionScope(this.scopeOption, this.transactionOptions))
            {
                this.inner.Handle(delivery);

                Log.Debug("Committing transaction scope associated with delivery.");
                scope.Complete();
            }
        }
Ejemplo n.º 16
0
		public virtual void AuditReceive(IDeliveryContext delivery)
		{
			if (delivery == null)
				throw new ArgumentNullException("delivery");

			var header = delivery.CurrentMessage.Headers.TryGetValue(DispatchStamp);

			DateTime dispatched;
			if (DateTime.TryParse(header, out dispatched))
				delivery.CurrentMessage.Dispatched = dispatched.ToUniversalTime();
		}
		public virtual void Handle(IDeliveryContext delivery)
		{
			Log.Debug("Creating new transaction scope associated for delivery.");
			using (var scope = new TransactionScope(this.scopeOption, this.transactionOptions))
			{
				this.inner.Handle(delivery);

				Log.Debug("Committing transaction scope associated with delivery.");
				scope.Complete();
			}
		}
		public virtual void Handle(IDeliveryContext delivery)
		{
			if (delivery == null)
				throw new ArgumentNullException("delivery");

			Log.Debug("Channel message delivery received, routing to inner delivery handler.");
			this.inner.Handle(delivery);

			Log.Debug("Committing transaction associated with delivery.");
			delivery.CurrentTransaction.Commit();
		}
Ejemplo n.º 19
0
        public virtual void Handle(IDeliveryContext delivery)
        {
            if (delivery == null)
            {
                throw new ArgumentNullException("delivery");
            }

            Log.Debug("Channel message delivery received, routing to inner delivery handler.");
            this.inner.Handle(delivery);

            Log.Debug("Committing transaction associated with delivery.");
            delivery.CurrentTransaction.Commit();
        }
Ejemplo n.º 20
0
        protected virtual void Receive(IDeliveryContext context, Action <IDeliveryContext> callback)
        {
            try
            {
                this.AuditReceive(context);

                Log.Verbose("Routing delivery to configured callback.");
                this.currentContext = context;
                callback(this);
            }
            finally
            {
                this.currentContext = null;
            }
        }
		protected virtual void Receive(IDeliveryContext context, Action<IDeliveryContext> callback)
		{
			try
			{
				this.AuditReceive(context);

				Log.Verbose("Routing delivery to configured callback.");
				this.currentContext = context;
				callback(this);
			}
			finally
			{
				this.currentContext = null;
			}
		}
Ejemplo n.º 22
0
        public virtual void AuditReceive(IDeliveryContext delivery)
        {
            if (delivery == null)
            {
                throw new ArgumentNullException("delivery");
            }

            var header = delivery.CurrentMessage.Headers.TryGetValue(DispatchStamp);

            DateTime dispatched;

            if (DateTime.TryParse(header, out dispatched))
            {
                delivery.CurrentMessage.Dispatched = dispatched.ToUniversalTime();
            }
        }
Ejemplo n.º 23
0
		public virtual void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
		{
			if (envelope == null)
				throw new ArgumentNullException("envelope");

			if (delivery != null && delivery.CurrentMessage == envelope.Message)
				return;

			var message = envelope.Message;
			if (message == envelope.State)
				return;

			var headers = message.Headers;
			headers[OriginHost] = Environment.MachineName.ToLowerInvariant();
			headers[DispatchStamp] = SystemTime.UtcNow.ToIsoString();
		}
		protected virtual void Receive(IDeliveryContext context, Action<IDeliveryContext> callback)
		{
			try
			{
				Log.Verbose("Delivery received, attempting to create nested resolver.");
				this.currentContext = context;
				this.currentResolver = this.resolver.CreateNestedResolver();
				callback(this);
			}
			finally
			{
				this.currentResolver.Dispose();
				this.currentResolver = null;
				this.currentContext = null;
			}
		}
Ejemplo n.º 25
0
		public virtual void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
		{
			var current = this.GetCurrentContext(envelope);
			if (current == null)
				return;

			var headers = envelope.Message.Headers;
			var request = current.Request;

			AppendHeader(headers, "useragent", request.UserAgent);
			AppendHeader(headers, "client-ip", GetUserAddress(request));
			AppendHeader(headers, "raw-url", request.RawUrl);
			AppendHeader(headers, "http-method", request.HttpMethod);
			AppendHeader(headers, "referring-url", AsString(request.UrlReferrer));
			AppendHeader(headers, "request-stamp", current.Timestamp.ToUniversalTime().ToIsoString());
		}
Ejemplo n.º 26
0
 protected virtual void Receive(IDeliveryContext context, Action <IDeliveryContext> callback)
 {
     try
     {
         Log.Verbose("Delivery received, attempting to create nested resolver.");
         this.currentContext  = context;
         this.currentResolver = this.resolver.CreateNestedResolver();
         callback(this);
     }
     finally
     {
         Log.Verbose("Delivery completed, disposing nested resolver.");
         this.currentResolver.TryDispose();
         this.currentResolver = null;
         this.currentContext  = null;
     }
 }
Ejemplo n.º 27
0
        private static IEnumerable <IMessageHandler <T> > TryResolve <T>(IDeliveryContext context)
        {
            var container = context.CurrentResolver.As <ILifetimeScope>();

            try
            {
                return(container.Resolve <IEnumerable <IMessageHandler <T> > >());
            }
            catch (DependencyResolutionException e)
            {
                if (IsAutofacException(e))
                {
                    throw;
                }

                throw e.InnerException;
            }
        }
Ejemplo n.º 28
0
        public virtual void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
        {
            var current = this.GetCurrentContext(envelope);

            if (current == null)
            {
                return;
            }

            var headers = envelope.Message.Headers;
            var request = current.Request;

            AppendHeader(headers, "useragent", request.UserAgent);
            AppendHeader(headers, "client-ip", GetUserAddress(request));
            AppendHeader(headers, "raw-url", request.RawUrl);
            AppendHeader(headers, "hostname", (request.Url ?? EmptyUrl).Host);
            AppendHeader(headers, "http-method", request.HttpMethod);
            AppendHeader(headers, "referring-url", AsString(request.UrlReferrer));
            AppendHeader(headers, "request-stamp", current.Timestamp.ToUniversalTime().ToIsoString());
        }
Ejemplo n.º 29
0
		public void AuditSend(ChannelEnvelope envelope, IDeliveryContext delivery)
		{
			if (!this.cloud)
				return;

			if (envelope == null)
				throw new ArgumentNullException("envelope");

			if (delivery != null && delivery.CurrentMessage == envelope.Message)
				return;

			var message = envelope.Message;
			if (message == envelope.State)
				return;

			var headers = message.Headers;
			headers[ProviderNameHeader] = ProviderName;
			headers[FacilityNameHeader] = FacilityName;
			headers[MachineIdHeader] = MachineId;
		}
Ejemplo n.º 30
0
 protected static bool Receive(IDeliveryContext delivery)
 {
     currentMessage = delivery.CurrentMessage.Messages.First();
     return((++messagesReceived) > 0);
 }
		protected static void TryBuild(IDeliveryContext delivery)
		{
			Try(() => handlerContext = new DefaultHandlerContext(delivery));
		}
Ejemplo n.º 32
0
 void IConsumer <TestMessage> .Consume(TestMessage message, IDeliveryContext deliveryContext)
 {
 }
		static ChannelEnvelope BuildEnvelope(IDeliveryContext delivery)
		{
			return new ChannelEnvelope(delivery.CurrentMessage, new[] { ChannelEnvelope.LoopbackAddress });
		}
Ejemplo n.º 34
0
 public void Consume(HelloWorldMessage message, IDeliveryContext deliveryContext)
 {
     Console.WriteLine("consuming message!");
 }
Ejemplo n.º 35
0
        public void Consume(CapitalizeMessage message, IDeliveryContext deliveryContext)
        {
            var upcased = message.Word.ToUpper();

            deliveryContext.Reply(new CapitalizedMessage(upcased));
        }
Ejemplo n.º 36
0
 public PersonasControllerTest()
 {
     context = new FakeMemoryContext();
 }
 protected static void TryBuild(IDeliveryContext delivery)
 {
     Try(() => handlerContext = new DefaultHandlerContext(delivery));
 }
Ejemplo n.º 38
0
 public Context(IDeliveryContext deliveryContext, bool multiple, bool requeue)
 {
     DeliveryContext = deliveryContext;
     _multiple       = multiple;
     _requeue        = requeue;
 }
Ejemplo n.º 39
0
 public PersonaController(IDeliveryContext c)
 {
     context = c;
 }
Ejemplo n.º 40
0
 public PersonaController()
 {
     context = new DeliveryContext();
 }
Ejemplo n.º 41
0
 public void AuditReceive(IDeliveryContext delivery)
 {
     // no op
 }
Ejemplo n.º 42
0
 public void Consume(TestMessage message, IDeliveryContext deliveryContext)
 {
 }
Ejemplo n.º 43
0
 public void Consume(HelloWorldMessage message, IDeliveryContext deliveryContext)
 {
 }
Ejemplo n.º 44
0
 public void Consume(PubSubMessage message, IDeliveryContext deliveryContext)
 {
     Console.WriteLine(message.Body);
 }
		protected static bool Receive(IDeliveryContext delivery)
		{
			currentMessage = delivery.CurrentMessage.Messages.First();
			return (++messagesReceived) > 0;
		}
Ejemplo n.º 46
0
		public virtual void AuditReceive(IDeliveryContext delivery)
		{
			// no op
		}