private void ConnectToSubscriptionService()
        {
            _subscriptionServiceEndpoint = _objectBuilder.GetInstance <IEndpointFactory>()
                                           .GetEndpoint(_objectBuilder.GetInstance <IConfiguration>().SubscriptionServiceUri);

            _subscriptionServiceEndpoint.Send(new AddSubscriptionClient(_clientId, _bus.Endpoint.Uri, _bus.Endpoint.Uri));
        }
Beispiel #2
0
    void SubscriptionManager()
    {
        _bus = ServiceBusConfigurator.New(servicesBus =>
        {
            servicesBus.ReceiveFrom("msmq://localhost/mt_subscription_ui");
            servicesBus.SetObjectBuilder(_builder);
            servicesBus.ConfigureService <SubscriptionClientConfigurator>(client =>
            {
                // need to add the ability to read from configuratino settings somehow
                client.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions");
            });
        });

        _unsubscribe = _bus.Subscribe(this);


        _subscriptionServiceEndpoint = _builder.GetInstance <IEndpointFactory>().GetEndpoint("msmq://localhost/mt_subscriptions");


        _subscriptionServiceEndpoint.Send(new CacheUpdateRequest(_bus.Endpoint.Uri));

        //			_timeoutRepository.TimeoutAdded += TimeoutRefreshNeeded;
        //			_timeoutRepository.TimeoutUpdated += TimeoutRefreshNeeded;
        //			_timeoutRepository.TimeoutRemoved += TimeoutRefreshNeeded;
    }
Beispiel #3
0
 private T CreateInstance <T>()
 {
     //return typeof(T).IsInterface
     //            //? InterfaceBuilder.CreateObject<T>()
     //            : _dependencyInjectionContainer.GetInstance<T>();
     return(_dependencyInjectionContainer.GetInstance <T>());
 }
        private Consumes <TMessage> .Selected BuildConsumer()
        {
            TComponent component = _builder.GetInstance <TComponent>();

            Consumes <TMessage> .Selected consumer = component.TranslateTo <Consumes <TMessage> .Selected>();

            return(consumer);
        }
Beispiel #5
0
        public IBusService Create(IServiceBus bus, IObjectBuilder builder)
        {
            var endpointFactory = builder.GetInstance <IEndpointFactory>();

            var service = new SubscriptionClient(endpointFactory)
            {
                SubscriptionServiceUri = _subscriptionServiceUri
            };

            return(service);
        }
        private Consumes <TMessage> .All BuildConsumer()
        {
            TComponent component = _builder.GetInstance <TComponent>();

            if (component == null)
            {
                throw new ConfigurationException(string.Format("Unable to resolve type '{0}' from container: ", typeof(TComponent)));
            }

            Consumes <TMessage> .All consumer = component.TranslateTo <Consumes <TMessage> .All>();

            return(consumer);
        }
        public IBusService Create(IServiceBus bus, IObjectBuilder builder)
        {
            var service = builder.GetInstance <TService>();

            return(service);
        }
        public void HandleMessage(IMessage message)
        {
            var messageInformation = new MessageInformation
            {
                UniqueIdentifier        = Guid.NewGuid(),
                Topic                   = _topic,
                Channel                 = _channel,
                HandlerType             = _handlerType,
                MessageType             = _messageType,
                Message                 = message,
                DeserializedMessageBody = null,
                Started                 = DateTime.UtcNow
            };

            _bus.SetCurrentMessageInformation(messageInformation);

            // Get handler
            object handler;

            try
            {
                handler = _objectBuilder.GetInstance(_handlerType);
                messageInformation.HandlerType = handler.GetType();
            }
            catch (Exception ex)
            {
                messageInformation.Finished = DateTime.UtcNow;

                _messageAuditor.TryOnFailed(_logger, _bus,
                                            new FailedMessageInformation
                                            (
                                                messageInformation,
                                                FailedMessageQueueAction.Finish,
                                                FailedMessageReason.HandlerConstructor,
                                                ex
                                            )
                                            );

                message.Finish();
                return;
            }

            // Get deserialized value
            object value;

            try
            {
                value = _serializer.Deserialize(_concreteMessageType, message.Body);
            }
            catch (Exception ex)
            {
                messageInformation.Finished = DateTime.UtcNow;

                _messageAuditor.TryOnFailed(_logger, _bus,
                                            new FailedMessageInformation
                                            (
                                                messageInformation,
                                                FailedMessageQueueAction.Finish,
                                                FailedMessageReason.MessageDeserialization,
                                                ex
                                            )
                                            );

                message.Finish();
                return;
            }

            // Handle message
            messageInformation.DeserializedMessageBody = value;
            _messageAuditor.TryOnReceived(_logger, _bus, messageInformation);

            try
            {
                _handleMethod.Invoke(handler, new[] { value });
            }
            catch (Exception ex)
            {
                bool requeue = (message.Attempts < message.MaxAttempts);

                messageInformation.Finished = DateTime.UtcNow;

                if (requeue)
                {
                    message.Requeue();
                }
                else
                {
                    message.Finish();
                }

                _messageAuditor.TryOnFailed(_logger, _bus,
                                            new FailedMessageInformation
                                            (
                                                messageInformation,
                                                requeue ? FailedMessageQueueAction.Requeue : FailedMessageQueueAction.Finish,
                                                requeue ? FailedMessageReason.HandlerException : FailedMessageReason.MaxAttemptsExceeded,
                                                ex
                                            )
                                            );

                return;
            }

            messageInformation.Finished = DateTime.UtcNow;

            _messageAuditor.TryOnSucceeded(_logger, _bus, messageInformation);
        }
Beispiel #9
0
 private T CreateInstance <T>()
 {
     return(typeof(T).IsInterface
                 ? InterfaceBuilder.CreateObject <T>()
                 : _dependencyInjectionContainer.GetInstance <T>());
 }
Beispiel #10
0
        public IBusService Create(IServiceBus bus, IObjectBuilder builder)
        {
            var ef = builder.GetInstance <IEndpointFactory>();

            return(new RoutingService(_routes, ef));
        }