public MessageInStore getMessageInStore4j(byte[] msgId) {
        if (init()) {

            MessageInStore messageInStore4j = null;
            if (null != cache) {
                messageInStore4j = cache.get(msgId);
            }
            if (null != messageInStore4j) {
                return messageInStore4j;
            }
            try {

                byte[] objectBytes = store.get(msgId);
                if (null == objectBytes) {
                    logger.warn("Message does not exist. messageId: " + UniqId.getInstance().bytes2string(msgId));
                    return null;
                }
                try {
                    ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
                    try {
                        Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
                        messageInStore4j = (MessageInStore) serializer.deserialize(objectBytes);
                    } finally {
                        Thread.currentThread().setContextClassLoader(contextClassLoader);
                    }
                } catch (Exception e) {
                    logger.warn("Message does not exist. MsgId:[" + msgId + "]", e);
                    return null;
                }
                if (null == messageInStore4j) {
                    logger.warn("Get message error cause null == messageInStore4j  MsgId:[" + msgId + "]");
                    return null;
                }
                if (null != cache) {
                    cache.put(msgId, messageInStore4j);
                }
                return messageInStore4j;
            } catch (Throwable t) {
                logger.error("Get message error.", t);
                return null;
            }
        } else {
            return null;
        }
    }