I was thinking something like this...

    MessageGroupMetadata meta = messageStore.getMessageGroupMetadata(correlationKey);

    if (!meta.isComplete() && meta.canAdd(message)) {
        if (logger.isTraceEnabled()) {
            logger.trace("Adding message to group [ " + messageGroup + "]");
    }
    this.store(correlationKey, message); // change to not return the entire group
    meta = messageStore.getMessageGroupMetadata(correlationKey); // refetch
    if (releaseStrategy.canRelease(meta)) {
        MessageGroup messageGroup = messageStore.getMessageGroup(correlationKey)
        Collection<Message<?>> completedMessages = null;
        try {
            completedMessages = this.completeGroup(message, correlationKey, messageGroup);
        }
        ...

But I see we need to add `canAdd()` to meta.