The dynamic discovery protocol combines reconnect logic with a discovery agent to dynamically create a list of brokers to which the client can connect. The discovery protocol invokes a discovery agent in order to build up a list of broker URIs. The protocol then randomly chooses a URI from the list and attempts to establish a connection to it. If it does not succeed, or if the connection subsequently fails, a new connection is established to one of the other URIs in the list.
Example 8.10 shows the syntax for a discovery URI.
DiscoveryAgentUri
is URI for the discovery agent used to
build up the list of available brokers. Discovery agents are described in
Discovery Agents.
The options, ?
, are specified in the form
of a query list. The discovery options are described in
Table 8.1. You can also inject transport options as
described in Setting options on the discovered transports.Options
![]() | Tip |
---|---|
If no options are required, you can drop the parentheses from the URI. The resulting
URI would take the form
|
The discovery protocol supports the options described in Table 8.1.
Table 8.1. Dynamic Discovery Protocol Options
Example 8.11 shows a discovery URI that uses a multicast discovery agent.
The list of transport options, Options
, in the discovery URI
can also be used to set options on the discovered transports. If you
set an option not listed in Setting options on the discovered transports,
the URI parser attempts to inject the option setting into every one of the discovered
endpoints.
Example 8.12 shows a discovery URI that sets the TCP
connectionTimeout
option to 10 seconds.
Example 8.12. Injecting Transport Options into a Discovered Transport
discovery://(multicast://default)?connectionTimeout=10000
The 10 second timeout setting is injected into every discovered TCP endpoint.