public static String md5Hex(byte[] bytes) throws NoSuchAlgorithmException {
        try {
            MessageDigest messageDigest = MESSAGE_DIGEST_LOCAL.get();
            if (messageDigest != null) {
                return encodeHexString(messageDigest.digest(bytes));
            }
            throw new NoSuchAlgorithmException("MessageDigest get MD5 instance error");
        } finally {
            MESSAGE_DIGEST_LOCAL.remove();
        }
    }
@Test
    public void assertMd5Hex() throws NoSuchAlgorithmException {
        String md5 = "3cdefff74dcf7a5d60893865b84b62c8";
        String message = "message-consume";
        Assert.isTrue(md5.equals(Md5Util.md5Hex(message.getBytes())));
    }