private static INeedARequestContext AddExternalBusMaybe( IBrighterOptions options, IAmAProducerRegistry producerRegistry, INeedMessaging messagingBuilder, MessageMapperRegistry messageMapperRegistry, InboxConfiguration inboxConfiguration, IAmAnOutboxSync <Message> outbox, IAmABoxTransactionConnectionProvider overridingConnectionProvider, IUseRpc useRequestResponse) { ExternalBusType externalBusType = GetExternalBusType(producerRegistry, useRequestResponse); if (externalBusType == ExternalBusType.None) { return(messagingBuilder.NoExternalBus()); } else if (externalBusType == ExternalBusType.FireAndForget) { return(messagingBuilder.ExternalBus( new ExternalBusConfiguration(producerRegistry, messageMapperRegistry, useInbox: inboxConfiguration), outbox, overridingConnectionProvider)); } else if (externalBusType == ExternalBusType.RPC) { return(messagingBuilder.ExternalRPC( new ExternalBusConfiguration( producerRegistry, messageMapperRegistry, responseChannelFactory: options.ChannelFactory, useInbox: inboxConfiguration), outbox, useRequestResponse.ReplyQueueSubscriptions)); } throw new ArgumentOutOfRangeException("The external bus type requested was not understood"); }
private static ExternalBusType GetExternalBusType(IAmAProducerRegistry producerRegistry, IUseRpc useRequestResponse) { var externalBusType = producerRegistry == null ? ExternalBusType.None : ExternalBusType.FireAndForget; if (externalBusType == ExternalBusType.FireAndForget && useRequestResponse.RPC) { externalBusType = ExternalBusType.RPC; } return(externalBusType); }