diff --git a/src/main/java/org/apache/sling/distribution/journal/queue/impl/EntryUtil.java b/src/main/java/org/apache/sling/distribution/journal/queue/impl/EntryUtil.java
index 9b9a84b..50b9884 100644
--- a/src/main/java/org/apache/sling/distribution/journal/queue/impl/EntryUtil.java
+++ b/src/main/java/org/apache/sling/distribution/journal/queue/impl/EntryUtil.java
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.distribution.journal.queue.impl;
 
+import javax.annotation.Nonnull;
+
 import org.apache.sling.distribution.journal.queue.QueueItemFactory;
 import org.apache.sling.distribution.queue.DistributionQueueItem;
 
@@ -26,7 +28,7 @@
     private EntryUtil() {
     }
 
-    public static long entryOffset(String entryId) {
+    public static long entryOffset(@Nonnull String entryId) {
         String[] chunks = entryId.split("@");
         if (chunks.length != 2) {
             throw new IllegalArgumentException(String.format("Unsupported entryId format %s", entryId));
diff --git a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubErrQueue.java b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubErrQueue.java
index 69f1f59..790acae 100644
--- a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubErrQueue.java
+++ b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubErrQueue.java
@@ -96,10 +96,12 @@
 
     @Override
     public DistributionQueueEntry getEntry(@Nonnull String entryId) {
-        DistributionQueueItem queueItem = agentQueue.getItem(EntryUtil.entryOffset(entryId));
-        return (queueItem != null)
-                ? entryFactory.create(queueItem)
-                : null;
+        try {
+            DistributionQueueItem queueItem = agentQueue.getItem(EntryUtil.entryOffset(entryId));
+            return (queueItem != null) ? entryFactory.create(queueItem) : null;
+        } catch (IllegalArgumentException e) {
+            return null;
+        }
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueue.java b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueue.java
index 3ca97fc..f8ed0ff 100644
--- a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueue.java
+++ b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueue.java
@@ -124,8 +124,12 @@
 
     @Override
     public DistributionQueueEntry getEntry(String entryId) {
-        DistributionQueueItem queueItem = offsetQueue.getItem(EntryUtil.entryOffset(entryId));
-        return entryFactory.create(queueItem);
+        try {
+            DistributionQueueItem queueItem = offsetQueue.getItem(EntryUtil.entryOffset(entryId));
+            return entryFactory.create(queueItem);
+        } catch (IllegalArgumentException e) {
+            return null;
+        }
     }
 
     @Override
diff --git a/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueTest.java b/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueTest.java
index 8ae13b4..e540502 100644
--- a/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueTest.java
+++ b/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueTest.java
@@ -103,6 +103,12 @@
     }
 
     @Test
+    public void testGetItemWithIllegalArgument() {
+        assertNull(queue.getEntry("illegal"));
+        assertNull(queue.getEntry("illegal@argument"));
+    }
+
+    @Test
     public void testGetItem() throws Exception {
         addEntries();
         
