public ChannelFactory(IConnectionFactory connectionFactory, RabbitMqConfiguration config, ChannelFactoryConfiguration channelConfig, ILogger <ChannelFactory> logger) { _logger = logger; _connectionFactory = connectionFactory; _config = config; _channelConfig = channelConfig; _requestQueue = new ConcurrentQueue <TaskCompletionSource <IModel> >(); _channels = new LinkedList <IModel>(); ConnectToBroker(); Initialize(); }
public ChannelFactoryTests() { _connectionFactory = new Mock <IConnectionFactory>(); _connection = new Mock <IConnection>(); _firstChannel = new Mock <IModel>(); _secondChannel = new Mock <IModel>(); _thirdChannel = new Mock <IModel>(); _config = RawRabbitConfiguration.Local; _channelConfig = ChannelFactoryConfiguration.Default; _connectionFactory .Setup(c => c.CreateConnection(It.IsAny <IList <string> >())) .Returns(_connection.Object); }
/// <summary> /// Creates a default <see cref="IBusClient{TMessageContext}"/> according to config. /// </summary> /// <remarks> /// This component replaces RawRabbit.vNext.BusClientFactory in order to avoid heavy dependency "pollution", but at /// the cost of inflexible, hard-wired setup. /// </remarks> /// <typeparam name="TMessageContext">The type of the context.</typeparam> /// <param name="config">The raw rabbit configuration.</param> /// <returns>The bus client.</returns> public static IBusClient <TMessageContext> CreateDefault <TMessageContext>(RawRabbitConfiguration config) where TMessageContext : MessageContext { var namingConventions = new NamingConventions(); var configurationEvaluator = new ConfigurationEvaluator(config, namingConventions); var connectionFactory = CreateConnectionFactory(config); var channelConfig = new ChannelFactoryConfiguration(); var channelFactory = new ChannelFactory(connectionFactory, config, channelConfig); var consumerFactory = new EventingBasicConsumerFactory(); var topologyProvider = new TopologyProvider(channelFactory); var jsonSerializer = new JsonSerializer(); var serializer = new MessageSerializer(jsonSerializer); IMessageContextProvider <TMessageContext> contextProvider = new MessageContextProvider <TMessageContext>(jsonSerializer); var contextEnhancer = new ContextEnhancer(channelFactory, namingConventions); var propertiesProvider = new BasicPropertiesProvider(config); var errorHandling = new DefaultStrategy( serializer, namingConventions, propertiesProvider, topologyProvider, channelFactory); ISubscriber <TMessageContext> subscriber = new Subscriber <TMessageContext>( channelFactory, consumerFactory, topologyProvider, serializer, contextProvider, contextEnhancer, errorHandling, config); var acknowledger = new NoAckAcknowledger(); var publisher = new Publisher <TMessageContext>( channelFactory, topologyProvider, serializer, contextProvider, acknowledger, propertiesProvider, config); var responder = new Responder <TMessageContext>( channelFactory, topologyProvider, consumerFactory, serializer, contextProvider, contextEnhancer, propertiesProvider, errorHandling, config); var requester = new Requester <TMessageContext>( channelFactory, consumerFactory, serializer, contextProvider, errorHandling, propertiesProvider, topologyProvider, config); var client = new BaseBusClient <TMessageContext>( configurationEvaluator, subscriber, publisher, responder, requester); return(client); }