I am using a C++ broker with clients written in C++, Python, and Java.  If we run the system overnight, it reliably does not send/receive messages by morning.  All messages are exchanged over topics with subjects designating the destination.  I have 3 questions:
1.) Should we be using queues?  Is there an advantage to using queues over topics?  What is the design decision that picks a queue over a topic?  Queues seem more rigid (i.e. if you know node A sent a request and wants a response, you would send a response right back; pub/sub).
2.) If a message goes unacknowledged, what can happen?  I discovered that the Python module was missing a session.acknowledge().  Could this be causing our overnight failures?  I discovered this problem today so I will hopefully have more insight tomorrow.  The remedy has been to restart the qpidd service.  (We are running on x64 Linux).
3.) Is this a good reason to use cluster fail over?
1) That depends on architecture.  Both methods, queues and topics, can get messages from many sources to many destinations.  Topics get messages to all listeners, queues get message to one of the listeners - whoever grabs the message first.
2) Are there any error or log messages pertaining to failure?  I suspect you are running out of resources.
3) No, you should figure out why your messaging fails before 24 hours.
Qpid reliability