【发布时间】:2018-03-27 18:38:04
【问题描述】:
我有一个应用程序需要连接到 2 个不同的 RabbitMQ 服务器。调用 RabbitHutch.CreateBus(connectionString1) 和 RabbitHutch.CreateBus(connectionString2) 都返回一个连接到 connectionString1 的 IBus。我实施了这种解决方法,但我想从社区中了解是否有更好的方法来实现这一点,或者我的方法是否有效。
var connectionFactory = container.Resolve<IConnectionFactory>();
var logger = container.Resolve<IEasyNetQLogger>();
var eventBus = container.Resolve<IEventBus>();
var connectionConfiguration = container.Resolve<ConnectionConfiguration>();
var persistentConnectionFactory = container.Resolve<IPersistentConnectionFactory>();
var clusterHostSelectionStrategy = container.Resolve<IClusterHostSelectionStrategy<ConnectionFactoryInfo>>();
// override these objects to connect to a different RabbitMQ server
connectionConfiguration = (new ConnectionStringParser()).Parse(configuration["spring:cloud:bus"]);
connectionFactory = new ConnectionFactoryWrapper(connectionConfiguration, clusterHostSelectionStrategy);
persistentConnectionFactory = new PersistentConnectionFactory(logger, connectionFactory, eventBus);
_bus = new RabbitAdvancedBus(
connectionFactory,
container.Resolve<IConsumerFactory>(),
logger,
container.Resolve<IClientCommandDispatcherFactory>(),
container.Resolve<IPublishConfirmationListener>(),
eventBus,
container.Resolve<IHandlerCollectionFactory>(),
container,
connectionConfiguration,
container.Resolve<IProduceConsumeInterceptor>(),
container.Resolve<IMessageSerializationStrategy>(),
container.Resolve<IConventions>(),
container.Resolve<AdvancedBusEventHandlers>(),
persistentConnectionFactory);
【问题讨论】: