Как программно настроить прослушиватель Azure ServiceBus для режима подключения «AutoDetect»?

1

Я разработал слушателя, который предоставляет приложение LOB по служебной шине. Мне пришлось написать этот слушатель, потому что наше приложение защищено брандмауэром, который не позволяет входящее соединение.

Ниже приведен код, как я инициализирую свой прослушиватель с помощью NetTcpRelayBinding, и он работает достаточно хорошо:

var sharedSecretServiceBusCredential = new TransportClientEndpointBehavior()
{
    TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("listener", "MySecret")
};

var address = ServiceBusEnvironment.CreateServiceUri("sb", "MyNamespace", "CrmConnectorService");

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp;

_host = new ServiceHost(typeof(CrmConnectorService), address);

var binding = new NetTcpRelayBinding()
{
    CloseTimeout = TimeSpan.FromMinutes(5),
    OpenTimeout = TimeSpan.FromMinutes(5),
    ReceiveTimeout = TimeSpan.FromMinutes(5),
    SendTimeout = TimeSpan.FromMinutes(5)
};
binding.Security.RelayClientAuthenticationType = RelayClientAuthenticationType.RelayAccessToken;

var endpoint = _host.AddServiceEndpoint(typeof(ICrmConnectorService), binding, address);

var serviceRegistrySettings = new ServiceRegistrySettings(DiscoveryType.Private);

_host.Description.Endpoints[0].Behaviors.Add(serviceRegistrySettings);
_host.Description.Endpoints[0].Behaviors.Add(sharedSecretServiceBusCredential);

_host.Open();

Однако у нас есть новое требование: мне нужно иметь возможность поддерживать прокси. Я понимаю, что NetTcp не поддерживает прокси-серверы (пожалуйста, поправьте меня, если я ошибаюсь), поэтому мне нужно иметь возможность отказываться от HTTP (я по-прежнему хочу использовать TCP, если это возможно, и при необходимости откатываться только от HTTP). Я провел некоторое исследование и обнаружил, что ServiceBus поддерживает режим подключения "AutoDetect", который "проверяет, доступен ли какой- либо вариант подключения для текущей сетевой среды. Если оба доступны, система будет выбирать TCP по умолчанию". Это именно то, чего я хочу. Однако я не знаю, как улучшить свой код для поддержки этой функции.

Очевидно, я изменюсь:

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp;

с

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.AutoDetect;

но я не знаю, что еще мне нужно изменить. Я предполагаю, что мне как-то нужно настроить другое связывание в дополнение к NetTcp, но как это сделать?

Теги:
azure
azure-servicebusrelay

1 ответ

1

AutoDetect - это режим подключения по умолчанию - вам не нужно ничего добавлять. И он должен работать с прокси.

  • 0
    На самом деле AutoDetect используется по умолчанию, но я действительно пытаюсь понять, как мне настроить обе привязки? В приведенном мною примере кода видно, что я настраиваю привязку TCP, я хочу знать, как настроить привязку HTTP IN ADDITION для привязки TCP?
  • 0
    Вам не нужно настраивать другую привязку, чтобы она работала в режиме подключения HTTP. Привязка NetTcp вернется к использованию HTTP, если не сможет использовать TCP, если установлен режим подключения AutoDetect .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню