diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
index 7c65499..b2359b7 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
@@ -604,6 +604,10 @@
 
     private void enqueueMessages(ConnectionWrapper connWrapper, Map<Long, List<TransactionLogResource>> queuesPerMessage) throws StoreException
     {
+        if (queuesPerMessage.isEmpty())
+        {
+            return;
+        }
         Connection conn = connWrapper.getConnection();
         String sql = String.format("INSERT INTO %s (queue_id, message_id) values (?,?)", getQueueEntryTableName());
 
@@ -1148,6 +1152,8 @@
             {
                 throw new StoreException(e);
             }
+
+            _preCommitActions.add(() -> AbstractJDBCMessageStore.this.enqueueMessages(_connWrapper, _messagesToEnqueue));
         }
 
         @Override
@@ -1170,13 +1176,6 @@
                     }
                 });
             }
-            if(_messagesToEnqueue.isEmpty())
-            {
-                _preCommitActions.add(() -> {
-                    AbstractJDBCMessageStore.this.enqueueMessages(_connWrapper, _messagesToEnqueue);
-                    _messagesToEnqueue.clear();
-                });
-            }
             List<TransactionLogResource> queues = _messagesToEnqueue.computeIfAbsent(message.getMessageNumber(), messageId -> new ArrayList<>());
             queues.add(queue);
             return new JDBCEnqueueRecord(queue.getId(), message.getMessageNumber());
@@ -1220,6 +1219,7 @@
                 action.run();
             }
             _preCommitActions.clear();
+            _messagesToEnqueue.clear();
         }
 
         private void doPostCommitActions()
