diff --git a/LCS/MessageBus/src/MsgBus.cc b/LCS/MessageBus/src/MsgBus.cc
index 933a6df2d50f2ea8dbed7f72d4acc78c3d4a0a44..03ec2fa6068f9e566815acc70aae43a281dadb13 100644
--- a/LCS/MessageBus/src/MsgBus.cc
+++ b/LCS/MessageBus/src/MsgBus.cc
@@ -44,6 +44,13 @@ namespace LOFAR {
     if (itsNrMissingACKs) {
 //      LOG_ERROR_STR("Queue " << itsQueueName << " on broker " << itsBrokerName << " has " << itsNrMissingACKs << " messages not ACK'ed ");
 	}
+
+    try {
+      // Make sure all requests are finished
+      itsConnection.close();
+    } catch(const qpid::types::Exception &ex) {
+      LOG_FATAL_STR("Exception in destructor, cannot guarantee message delivery: " << ex.what());
+    }
   }
 
   bool FromBus::getMessage(LOFAR::Message &msg, double timeout) // timeout 0.0 means blocking
@@ -109,8 +116,16 @@ namespace LOFAR {
   } catch(const qpid::types::Exception &ex) {
     THROW(MessageBusException, ex.what());
   }
+
   ToBus::~ToBus(void)
   {
+
+    try {
+      // Make sure all requests are finished
+      itsConnection.close();
+    } catch(const qpid::types::Exception &ex) {
+      LOG_FATAL_STR("Exception in destructor, cannot guarantee message delivery: " << ex.what());
+    }
   }
 
   void ToBus::send(const std::string &msg)