Note that the URI are almost the same, except MyContractA has an additional qualification
(a)
<endpoint contract="MyContractA" binding="netTcpRelayBinding" address="sb://MyNS.servicebus.windows.net/Company/Area/Service"/>(b)
<endpoint contract="MyContractB" binding="netTcpRelayBinding" address="sb://MyNS.servicebus.windows.net/Company/Area"/>
Remember that each on-premise service that should be address-able via service bus need to be started to establish the connection to the sb relay(which if hosting in app fabric can be accomplished via the warm start feature), but after long periods of inactivity, the connection may be dropped and can be restored by issuing an HTTP Get to each (to re-establish the outbound connection to azure).
What we found was that we'd occasionally get this error trying to re-establish a connection (the services are hosted only once, because at the time of writing Azure SB supports only a single connection per endpoint)
The specified address already exists. Address sb://MyNS.servicebus.windows.net/Company/Area/Service/ already in use.
Which didn't make sense at all in this case.
The thought was that the order in which we "connected, or re-connected" the two services was important, if we started the service with the longer address (a) in example above, first, then no error.
Thanks to Paolo for finding us an explanation of this
Extract from that:-
"Suppose we need to expose the url i.e. just http://
The specified address already exists.Address sb://
So the resolution is, if needed then first register url like http://
No comments:
Post a Comment