The Smarts broker acts as a kind of DNS service. Any Smarts component that wants to contact another first asks the broker for the IP address and port number to use. The majority of simple/small Smarts deployments use a single broker which all domains, adapters etc register with and query for information about the domains they communicate with.
However there are situations where size of the deployment, the design for resiliency or the specifics of the network in which Smarts runs mean that this simple approach isnt enough.
For example .. consider a set of Smarts servers running in a server farm that need to be accessed by clients via a "NATting" firewall. This means that the IP addresses the domains register themselves with are not the same as the addresses the clients need to use to access them - and so the contents of the broker are "wrong" from the client's perspective.
One way to overcome this problem is to use the fully-qualified domain syntax when connecting to the domains. When using this technique, you typically leave the broker address field of the console login blank, and type something like the following the domain name field..
This syntax specifies the IP address, the port number AND the domain name and the broker is not involved in the process. The full format is..
IP address ":" port number "/" domain name
The same syntax can also be used following the "-s" option on many of the Smarts utilities, such as "dmctl", "sm_adapter", etc. Here's an example..
dmctl -s 10.0.25.99:9102/APM1 geti Router
The problem with using this approach is that the Smarts GUI needs to specify the domain names in this way when you use features like "browse all" - in effect you become the broker yourself. An alternative (to be discussed in a separate post) is to use a local broker.