private static LocalTransportSettings ValidateLocalTransport(CreateMsmqTransportSettings settings) { var result = new LocalTransportSettings { Transactional = settings.Address.IsTransactional, }; MsmqEndpointManagement.Manage(settings.Address, q => { if (!q.Exists) { if (!settings.CreateIfMissing) { throw new TransportException(settings.Address.Uri, "The transport does not exist and automatic creation is not enabled"); } q.Create(settings.Transactional || settings.Address.IsTransactional); } if (settings.RequireTransactional) { if (!q.IsTransactional && (settings.Transactional || settings.Address.IsTransactional)) { throw new TransportException(settings.Address.Uri, "The transport is non-transactional but a transactional transport was requested"); } } result.Transactional = q.IsTransactional; }); return(result); }
private static IMsmqTransport NewLocalTransport(CreateMsmqTransportSettings settings) { LocalTransportSettings transportSettings = ValidateLocalTransport(settings); if (transportSettings.Transactional) { return(new TransactionalMsmqTransport(settings.Address)); } return(new NonTransactionalMsmqTransport(settings.Address)); }