public PublishConfiguration GetConfiguration(Type messageType, Action <IPublishConfigurationBuilder> configuration)
        {
            configuration = configuration ?? (builder => { });

            // 根据注解属性获取Exchange和Routing Key值
            configuration = (builder =>
            {
                builder.WithExchange(ExchangeAction(messageType));
                var routingAttr = GetAttribute <RoutingAttribute>(messageType);
                if (routingAttr?.RoutingKey != null)
                {
                    builder.WithRoutingKey(routingAttr.RoutingKey);
                }
            }) + configuration;

            var exchangeConfig = new ExchangeConfiguration(_clientConfig.Exchange)
            {
                ExchangeName = _conventions.ExchangeNamingConvention(messageType)
            };
            var routingKey = _conventions.QueueNamingConvention(messageType);
            var cfgBuilder = new PublishConfigurationBuilder(exchangeConfig, routingKey);

            configuration?.Invoke(cfgBuilder);
            return(cfgBuilder.Configuration);
        }
示例#2
0
        public PublishConfiguration GetConfiguration(Type messageType, Action <IPublishConfigurationBuilder> configuration)
        {
            var exchangeConfig = new ExchangeConfiguration(_clientConfig.Exchange)
            {
                ExchangeName = _conventions.ExchangeNamingConvention(messageType)
            };
            var routingKey = _conventions.QueueNamingConvention(messageType);
            var builder    = new PublishConfigurationBuilder(exchangeConfig, routingKey);

            configuration?.Invoke(builder);
            return(builder.Configuration);
        }