Exemplo n.º 1
0
        protected virtual string DefaultSubscriptionIdGenerator(AutoSubscriberConsumerInfo c)
        {
            var r = new StringBuilder();
            var unique = string.Concat(SubscriptionIdPrefix, ":", c.ConcreteType.FullName, ":", c.MessageType.FullName);

            using (var md5 = MD5.Create())
            {
                var buff = md5.ComputeHash(Encoding.UTF8.GetBytes(unique));
                foreach (var b in buff)
                    r.Append(b.ToString("x2"));
            }

            return string.Concat(SubscriptionIdPrefix, ":", r.ToString());
        }
Exemplo n.º 2
0
 private Action<ISubscriptionConfiguration> AutoSubscriberConsumerInfo(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var configSettings = GetSubscriptionConfigurationAttributeValue(subscriptionInfo);
     if(configSettings == null)
     {
         return subscriptionConfiguration => {};
     }
     return configuration =>
         {
             //prefetch count is set to a configurable default in RabbitAdvancedBus
             //so don't touch it unless SubscriptionConfigurationAttribute value is other than 0.
             if(configSettings.PrefetchCount > 0)
             {
                 configuration.WithPrefetchCount(configSettings.PrefetchCount);
             }
             configuration.WithAutoDelete(configSettings.AutoDelete)
                          .WithCancelOnHaFailover(configSettings.CancelOnHaFailover)
                          .WithExpires(configSettings.Expires)
                          .WithPrefetchCount(configSettings.PrefetchCount)
                          .WithPriority(configSettings.Priority);
         };
 }
Exemplo n.º 3
0
 private IEnumerable<string> GetTopAttributeValues(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var consumeMethod = ConsumeMethod(subscriptionInfo);
     object[] customAttributes = consumeMethod.GetCustomAttributes(typeof(ForTopicAttribute), true);
     return customAttributes
                      .OfType<ForTopicAttribute>()
                      .Select(a => a.Topic);
 }
Exemplo n.º 4
0
 private Action<ISubscriptionConfiguration> TopicInfo(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var topics = GetTopAttributeValues(subscriptionInfo);
     if (topics.Count() != 0)
     {
         return GenerateConfigurationFromTopics(topics);
     }
     return configuration => configuration.WithTopic("#");
 }
Exemplo n.º 5
0
        private Action<ISubscriptionConfiguration> GenerateConfigurationAction(AutoSubscriberConsumerInfo subscriptionInfo)
        {
            return sc =>
                {
                    ConfigureSubscriptionConfiguration(sc);
                    TopicInfo(subscriptionInfo)(sc);
                    AutoSubscriberConsumerInfo(subscriptionInfo)(sc);
                };

        }
Exemplo n.º 6
0
        protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo)
        {
            var consumeMethod = ConsumeMethod(consumerInfo);

            return(consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute);
        }
 private Action<IAdvancedSubscriptionConfiguration> TopicInfo(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var topics = GetTopAttributeValues(subscriptionInfo);
     var allTopics = topics as string[] ?? topics.ToArray();
     if (allTopics.Count() != 0)
     {
         return GenerateConfigurationFromTopics(allTopics);
     }
     return configuration =>
     {
         configuration.WithTopic("#");
         SubscriptionConfiguration(configuration, subscriptionInfo);
     };
 }
Exemplo n.º 8
0
 private MethodInfo ConsumeMethod(AutoSubscriberConsumerInfo consumerInfo)
 {
     return consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }) ??
            GetExplicitlyDeclaredInterfaceMethod(consumerInfo.MessageType);
 }
Exemplo n.º 9
0
 private MethodInfo ConsumeMethod(AutoSubscriberConsumerInfo consumerInfo)
 {
     return(consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }) ??
            GetExplicitlyDeclaredInterfaceMethod(consumerInfo.MessageType));
 }
Exemplo n.º 10
0
        private static SubscriptionConfigurationAttribute GetSubscriptionConfigurationAttributeValue(AutoSubscriberConsumerInfo subscriptionInfo)
        {
            var customAttributes = subscriptionInfo.ConsumeMethod.GetCustomAttributes(typeof(SubscriptionConfigurationAttribute), true);

            return(customAttributes
                   .OfType <SubscriptionConfigurationAttribute>()
                   .FirstOrDefault());
        }
Exemplo n.º 11
0
        private static Action <ISubscriptionConfiguration> AutoSubscriberConsumerInfo(AutoSubscriberConsumerInfo subscriptionInfo)
        {
            var configSettings = GetSubscriptionConfigurationAttributeValue(subscriptionInfo);

            if (configSettings == null)
            {
                return(subscriptionConfiguration => { });
            }
            return(configuration =>
            {
                if (configSettings.PrefetchCount > 0)
                {
                    configuration.WithPrefetchCount(configSettings.PrefetchCount);
                }

                if (configSettings.Expires > 0)
                {
                    configuration.WithExpires(configSettings.Expires);
                }

                configuration
                .WithAutoDelete(configSettings.AutoDelete)
                .WithPriority(configSettings.Priority);
            });
        }
Exemplo n.º 12
0
        private AwaitableDisposable <ISubscriptionResult> AutoSubscribeConsumerAsync <TMesage, TConsumer>(AutoSubscriberConsumerInfo subscriptionInfo, CancellationToken cancellationToken)
            where TMesage : class
            where TConsumer : class, IConsume <TMesage>
        {
            var subscriptionAttribute       = GetSubscriptionAttribute(subscriptionInfo);
            var subscriptionId              = subscriptionAttribute != null ? subscriptionAttribute.SubscriptionId : GenerateSubscriptionId(subscriptionInfo);
            var configureSubscriptionAction = GenerateConfigurationAction(subscriptionInfo);

            var asyncDispatcher = TaskHelpers.FromAction <TMesage>((m, c) => AutoSubscriberMessageDispatcher.Dispatch <TMesage, TConsumer>(m, c));

            return(Bus.PubSub.SubscribeAsync(
                       subscriptionId,
                       asyncDispatcher,
                       configureSubscriptionAction,
                       cancellationToken
                       ));
        }
Exemplo n.º 13
0
        protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo)
        {
            var consumeMethod = consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType });

            return consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute;
        }
Exemplo n.º 14
0
 private IEnumerable<string> GetTopAttributeValues(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var consumeMethod = ConsumeMethod(subscriptionInfo);
     object[] customAttributes = consumeMethod.GetCustomAttributes(typeof(ForTopicAttribute), true);
     Console.WriteLine("Attributes for {0} have count {1}",  consumeMethod.Name ,  customAttributes.Count());
     return customAttributes
                      .OfType<ForTopicAttribute>()
                      .Select(a => a.Topic);
 }
Exemplo n.º 15
0
 private SubscriptionConfigurationAttribute GetSubscriptionConfigurationAttributeValue(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var consumeMethod = ConsumeMethod(subscriptionInfo);
     object[] customAttributes = consumeMethod.GetCustomAttributes(typeof(SubscriptionConfigurationAttribute), true);
     return customAttributes
                      .OfType<SubscriptionConfigurationAttribute>()
                      .FirstOrDefault();
 }
Exemplo n.º 16
0
        protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo)
        {
            var consumeMethod = ConsumeMethod(consumerInfo);

            return consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute;
        }
Exemplo n.º 17
0
        protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo)
        {
            var consumeMethod = consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType });

            return(consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute);
        }
Exemplo n.º 18
0
        private SubscriptionConfigurationAttribute GetSubscriptionConfigurationAttributeValue(AutoSubscriberConsumerInfo subscriptionInfo)
        {
            var consumeMethod = ConsumeMethod(subscriptionInfo);

            object[] customAttributes = consumeMethod.GetCustomAttributes(typeof(SubscriptionConfigurationAttribute), true).Cast <object>().ToArray();
            return(customAttributes
                   .OfType <SubscriptionConfigurationAttribute>()
                   .FirstOrDefault());
        }
 private string CreateSubscriptionId(AutoSubscriberConsumerInfo subscriptionInfo)
 {
     var subscriptionAttribute = GetSubscriptionAttribute(subscriptionInfo);
     return subscriptionAttribute != null ? subscriptionAttribute.SubscriptionId : GenerateSubscriptionId(subscriptionInfo);
 }