Further streamline flush semantics.
diff --git a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
index 0584435..4a19717 100644
--- a/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
+++ b/log4j-redis/src/main/java/org/apache/logging/log4j/redis/appender/RedisAppender.java
@@ -199,24 +199,19 @@
             LOGGER.warn("Recursive logging from [{}] for appender [{}].", event.getLoggerName(), getName());
         } else if (layout instanceof StringLayout) {
             String serializedEvent = ((StringLayout)layout).toSerializable(event);
-            boolean successfulOffer = logQueue.offer(serializedEvent);
-            if (shouldFlushLogQueue(event.isEndOfBatch(), successfulOffer)) {
-                try {
-                    tryFlushQueue();
-                } catch (final Exception e) {
-                    error("Unable to write to Redis in appender [" + getName() + "]", event, e);
-                }
-                while (!(logQueue.offer(serializedEvent))) {
-                    tryFlushQueue();
-                }
+            while (!logQueue.offer(serializedEvent)) {
+                tryFlushQueue();
+            }
+            if (shouldFlushLogQueue(event.isEndOfBatch())) {
+                tryFlushQueue();
             }
         } else {
             throw new AppenderLoggingException("The Redis appender only supports StringLayouts.");
         }
     }
 
-    private boolean shouldFlushLogQueue(boolean endOfBatch, boolean successfulOffer) {
-        return immediateFlush || endOfBatch || !successfulOffer;
+    private boolean shouldFlushLogQueue(boolean endOfBatch) {
+        return immediateFlush || endOfBatch;
     }
 
     private void tryFlushQueue() {