@Override
    public void handlerRule(final RuleData ruleData) {
        HystrixPropertiesFactory.reset();
        Optional.ofNullable(ruleData.getHandle()).ifPresent(rule -> {
            HystrixHandle hystrixHandle = GsonUtils.getInstance().fromJson(rule, HystrixHandle.class);
            String key = CacheKeyUtils.INST.getKey(ruleData);
            Optional.ofNullable(CACHED_HANDLE.get().obtainHandle(key)).ifPresent(hystrixHandleCache -> {
                if (hystrixHandleCache.getMaxConcurrentRequests() != hystrixHandle.getMaxConcurrentRequests()) {
                    String commandKey = hystrixHandle.getCommandKey();
                    Command command = new HystrixCommand(HystrixBuilder.build(hystrixHandle), null, null, null);
                    command.removeCommandKey(commandKey);
                }
                // fix ISSUE #3820, in same rule, change isolation strategy, can't circuit breaker
                if (hystrixHandleCache.getExecutionIsolationStrategy() != hystrixHandle.getExecutionIsolationStrategy()) {
                    Command command = new HystrixCommand(HystrixBuilder.build(hystrixHandleCache), null, null, null);
                    if (StringUtils.hasText(hystrixHandle.getCommandKey())) {
                        command.removeCommandKey(hystrixHandle.getCommandKey());
                    } else {
                        // delete all old Commands of the specified group
                        command.cleanCommand();
                    }
                }
            });
            CACHED_HANDLE.get().cachedHandle(key, hystrixHandle);
        });
    }
@Test
    public void testHandlerRUle() {
        hystrixPluginDataHandler.handlerRule(mock(RuleData.class));
        assertNotNull(HystrixPropertiesFactory.getCommandProperties(mock(HystrixCommandKey.class), mock(Setter.class)));
    }