diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java index d6af7b84e79..9fd063e0e06 100644 --- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java +++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java @@ -198,7 +198,10 @@ public TimerMessageStore(final MessageStore messageStore, final MessageStoreConf bufferLocal = new ThreadLocal() { @Override protected ByteBuffer initialValue() { - return ByteBuffer.allocateDirect(storeConfig.getMaxMessageSize() + 100); + int maxMessageBodySize = storeConfig.getMaxMessageSize(); + int maxMessageSize = Integer.MAX_VALUE - maxMessageBodySize >= 64 * 1024 ? + maxMessageBodySize + 64 * 1024 : Integer.MAX_VALUE; + return ByteBuffer.allocateDirect(maxMessageSize); } };