Is i correct understand that best way provide reliability of queue it is network of master-slave brokers (for example master-slave by using ZooKeeper)? In consumers and producers failover settings we set master's addresses and when one of the masters go offline another master-slave nodes of the brokers network get this master's messager from his slaves and we don't lose messages. When broken master go online, its get new consumers and producers and get some messages. I'm right?
There are two ways to provide high availability with ActiveMQ.
Master/slave setup using a shared store. For KahaDB (default store), that would be a shared disk somewhere. NFS/Windows file share or similar. There are many ways to create reliable shared disks. SAN and what not.
Replicated master/slave. That would be LevelDB with Zookeeper. If you can't get a high performance, reliable shared disk, this would be your best option.
You are correct the client should enter a failover address when they connect.