public String getMessage(String key, String... params) {
        if (StringUtils.isBlank(key)) {
            return null;
        }
        StringBuilder sb = new StringBuilder();
        sb.append(getFormattedMessage(key));
        String msg = parseStringValue(sb.toString(), new HashSet<String>());
        if (params == null || params.length == 0) {
            return msg;
        }
        if (StringUtils.isBlank(msg)) {
            return msg;
        }
        return MessageFormat.format(msg, (Object[])params);
    }
@Test
    void getMessage() {
        ResourceBundleUtil resourceBundleUtil = ResourceBundleUtil.getInstance();
        String emptyKeyMsg = resourceBundleUtil.getMessage("", "param1");
        Assertions.assertNull(emptyKeyMsg);
        Assertions.assertThrows(MissingResourceException.class, new Executable() {
            @Override
            public void execute() throws Throwable {
                resourceBundleUtil.getMessage("NotExist");
            }
        });
        String configErrorMsgWithoutParams = resourceBundleUtil.getMessage("ERR_CONFIG");
        Assertions.assertEquals("config error, {0}", configErrorMsgWithoutParams);

        String configErrorMsgWithParams = resourceBundleUtil.getMessage("ERR_CONFIG", "vgroup_mapping_test");
        Assertions.assertEquals("config error, vgroup_mapping_test", configErrorMsgWithParams);
    }