Чтобы помочь будущим связанных с этим проблем здесь является необходимой конфигурацией
расширения, необходимые как в издателя и конфигурации абонентского:
<extensions>
<behaviorExtensions>
<add name="transportClientEndpointBehavior" type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</behaviorExtensions>
<bindingExtensions>
<add name="netMessagingBinding" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</bindingExtensions>
</extensions>
Примечание: требуется сборка Microsoft.ServiceBus как в издателе, так и в подписчике. Пакет доступен в Nuget.
конфигурации на стороне подписчика:
<bindings>
<netMessagingBinding>
<binding name="messagingBinding" closeTimeout="00:03:00" openTimeout="00:03:00" receiveTimeout="00:03:00" sendTimeout="00:03:00" sessionIdleTimeout="00:01:00" prefetchCount="-1">
<transportSettings batchFlushInterval="00:00:01" />
</binding>
</netMessagingBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="securityBehavior">
<messageInterceptorBehavior/>
<transportClientEndpointBehavior>
<tokenProvider>
<windowsAuthentication>
<stsUris>
<stsUri value="https://[SERVER]:9355/[NAMESPACE]" />
</stsUris>
</windowsAuthentication>
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
<endpoint listenUri="sb://[SERVER]/[NAMESPACE]/[TOPIC]/Subscriptions/[SUBSCRIPTIONNAME]"
address="sb://[SERVER]/[NAMESPACE]/[TOPIC]"
behaviorConfiguration="securityBehavior" binding="netMessagingBinding"
bindingConfiguration="messagingBinding" name="InsuranceService"
contract="[WCF_CONTRACT_NAME]" />
конфигурации Издательство:
<bindings>
<netMessagingBinding>
<binding name="InsuranceService" closeTimeout="00:03:00" openTimeout="00:03:00"
receiveTimeout="00:03:00" sendTimeout="00:03:00" prefetchCount="-1"
sessionIdleTimeout="00:01:00">
<transportSettings batchFlushInterval="00:00:01" />
</binding>
</netMessagingBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="securityBehavior">
<messageInterceptorBehavior/>
<transportClientEndpointBehavior>
<tokenProvider>
<windowsAuthentication>
<stsUris>
<stsUri value="https://[SERVER]:9355/[NAMESPACE]" />
</stsUris>
</windowsAuthentication>
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="sb://[SERVER]/[NAMESPACE]/[TOPIC]"
behaviorConfiguration="securityBehavior" binding="netMessagingBinding"
bindingConfiguration="InsuranceService" contract="PushVoucherService.ISubscriber"
name="InsuranceService" />
</client>
Благодаря Рамиро. Используя netMessageBinding, я могу публиковать сообщения по этой теме и, по-видимому, получать сообщения из подписки.Но даже если сообщения расходуются из подписки, они, похоже, не обрабатываются самой службой. Я создал простую реализацию перехватчика IDispatchMessageInspector, но он не получает вызов, если я использую конечную точку SB. Он вызывается, если я использую конечную точку Http. – JCS
Где вы занимаетесь своим web-сервисом? Если вы используете IIS, вам нужно сначала активировать услугу (в модели IIS WCF не активируется до тех пор, пока не появится запрос). Документация по настройке IIS для работы с SB приведена здесь: http://msdn.microsoft.com/en-us/library/windowsazure/hh966775.aspx –
Похоже, что проблема связана с неверной конфигурацией конечных точек. Атрибут адреса должен содержать URI темы, в то время как listenURI указывает на URI подписки. Спасибо за вашу помощь! – JCS