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()); }
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); }; }
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); }
private Action<ISubscriptionConfiguration> TopicInfo(AutoSubscriberConsumerInfo subscriptionInfo) { var topics = GetTopAttributeValues(subscriptionInfo); if (topics.Count() != 0) { return GenerateConfigurationFromTopics(topics); } return configuration => configuration.WithTopic("#"); }
private Action<ISubscriptionConfiguration> GenerateConfigurationAction(AutoSubscriberConsumerInfo subscriptionInfo) { return sc => { ConfigureSubscriptionConfiguration(sc); TopicInfo(subscriptionInfo)(sc); AutoSubscriberConsumerInfo(subscriptionInfo)(sc); }; }
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); }; }
private MethodInfo ConsumeMethod(AutoSubscriberConsumerInfo consumerInfo) { return consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }) ?? GetExplicitlyDeclaredInterfaceMethod(consumerInfo.MessageType); }
private MethodInfo ConsumeMethod(AutoSubscriberConsumerInfo consumerInfo) { return(consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }) ?? GetExplicitlyDeclaredInterfaceMethod(consumerInfo.MessageType)); }
private static SubscriptionConfigurationAttribute GetSubscriptionConfigurationAttributeValue(AutoSubscriberConsumerInfo subscriptionInfo) { var customAttributes = subscriptionInfo.ConsumeMethod.GetCustomAttributes(typeof(SubscriptionConfigurationAttribute), true); return(customAttributes .OfType <SubscriptionConfigurationAttribute>() .FirstOrDefault()); }
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); }); }
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 )); }
protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo) { var consumeMethod = consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }); return consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute; }
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); }
private SubscriptionConfigurationAttribute GetSubscriptionConfigurationAttributeValue(AutoSubscriberConsumerInfo subscriptionInfo) { var consumeMethod = ConsumeMethod(subscriptionInfo); object[] customAttributes = consumeMethod.GetCustomAttributes(typeof(SubscriptionConfigurationAttribute), true); return customAttributes .OfType<SubscriptionConfigurationAttribute>() .FirstOrDefault(); }
protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo) { var consumeMethod = ConsumeMethod(consumerInfo); return consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute; }
protected virtual AutoSubscriberConsumerAttribute GetSubscriptionAttribute(AutoSubscriberConsumerInfo consumerInfo) { var consumeMethod = consumerInfo.ConcreteType.GetMethod(ConsumeMethodName, new[] { consumerInfo.MessageType }); return(consumeMethod.GetCustomAttributes(typeof(AutoSubscriberConsumerAttribute), true).SingleOrDefault() as AutoSubscriberConsumerAttribute); }
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); }