I am trying to migrate my circuit breaker code from Hystrix to Resilience4j. The communication is between two applications out of which one is an artifact containing all the resilience 4j config in the java code itself and the second application which is a microservice uses it directly.

There's one RequestId which generates in the microservice and propagates to the artifact context where it gets printed in the logs. With Hystrix, it was working perfectly fine but ever since I moved to resilience, I am getting null for the request Id.

Below is my config for bulk head and context propagator :

```
ThreadPoolBulkheadConfig bulkheadConfig = ThreadPoolBulkheadConfig.custom()
            .maxThreadPoolSize(maxThreadPoolSize)
            .coreThreadPoolSize(coreThreadPoolSize)
            .queueCapacity(queueCapacity)
            .contextPropagator(new DummyContextPropagator())
            .build();

    // Bulk Head Registry
    ThreadPoolBulkheadRegistry bulkheadRegistry = ThreadPoolBulkheadRegistry.of(bulkheadConfig);

    // Create Bulk Head
    ThreadPoolBulkhead bulkhead = bulkheadRegistry.bulkhead(name, bulkheadConfig);

```

Dummy Context Propagator :

```
public class  DummyContextPropagator implements ContextPropagator {
private static final Logger log = LoggerFactory.getLogger( DummyContextPropagator.class);

@Override
public Supplier<Optional<Object>> retrieve() {
    return () -> (Optional<Object>) get();
}

@Override
public Consumer<Optional<Object>> copy() {
    return (t) -> t.ifPresent(e -> {
        clear();
        put(e);
    });
}

@Override
public Consumer<Optional<Object>> clear() {
    return (t) ->  DummyContextHolder.clear();
}

public static class  DummyContextHolder {

    private static final ThreadLocal threadLocal = new ThreadLocal();

    private  DummyContextHolder() {
    }

    public static void put(Object context) {
        if (threadLocal.get() != null) {
            clear();
        }
        threadLocal.set(context);
    }

    public static void clear() {
        if (threadLocal.get() != null) {
            threadLocal.set(null);
            threadLocal.remove();
        }
    }

    public static Optional<Object> get() {
        return Optional.ofNullable(threadLocal.get());
    }
}
}

```

However, nothing seems to work so that I can get the RequestId.

Am I doing everything right or is there another way to do that ?