Repository: quarkusio/quarkus
Issue: ElasticRestClient fails to load the provided custom configuration via @ElasticsearchClientConfig

## Describe the bug
The ElasticRestClient fails to load the provided custom configuration via @ElasticsearchClientConfig.
I followed the documentation here https://quarkus.io/guides/elasticsearch#programmatically-configuring-elasticsearch to provide a custom configuration for elastic search. 

In my case I am adding  AWS signing interceptor to the httpClientBuilder.

Version 1.12.2.Final

### Expected behavior
The custom configuration (signing interceptor) should get loaded up

### Actual behavior
Fails to load the custom configuration.

## To Reproduce

Add a new custom configuration based on the docs.
```
@ApplicationScoped
@ElasticsearchClientConfig
public class MyCustomConfig implements RestClientBuilder.HttpClientConfigCallback {

   @Override
    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
             // log something here
   }

}

```
Then inject the REST client.

```
 @Inject
 RestClient lowLevelClient;
```

No logged message above


From the MR here: https://github.com/quarkusio/quarkus/commit/08df613dd1f989a96b2414755ddd1dbc1c8ec02b#diff-3530ce31269994606ad048f4d42f2fa57425d1fa08c6cf4ffb37980ee8dcbd5dR86

```
Iterable<InstanceHandle<RestClientBuilder.HttpClientConfigCallback>> handles = Arc.container()
                        .select(RestClientBuilder.HttpClientConfigCallback.class, new ElasticsearchClientConfig.Literal())
                        .handles();
```

I copied the above code to my unit tests and the size of the `handles` variable always seem to be 0.

Arc.container() does not seem to find the custom config. 

Or is there another class registration step missed in the documentation ?

Any feedback is really appreciated. 
Thank you

Tagging original authors for help.
@eAybars @gsmet 

Changed files:
extensions/elasticsearch-rest-client/deployment/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/deployment/ElasticsearchLowLevelClientProcessor.java
extensions/elasticsearch-rest-client/deployment/src/test/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchClientConfigTest.java

diff --git a/extensions/elasticsearch-rest-client/deployment/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/deployment/ElasticsearchLowLevelClientProcessor.java b/extensions/elasticsearch-rest-client/deployment/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/deployment/ElasticsearchLowLevelClientProcessor.java
index 00187a72355..5f631fc2dc1 100644
--- a/extensions/elasticsearch-rest-client/deployment/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/deployment/ElasticsearchLowLevelClientProcessor.java
+++ b/extensions/elasticsearch-rest-client/deployment/src/main/java/io/quarkus/elasticsearch/restclient/lowlevel/deployment/ElasticsearchLowLevelClientProcessor.java
@@ -6,6 +6,7 @@
 import io.quarkus.arc.deployment.BeanDefiningAnnotationBuildItem;
 import io.quarkus.arc.processor.DotNames;
 import io.quarkus.deployment.Feature;
+import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.elasticsearch.restclient.lowlevel.ElasticsearchClientConfig;
@@ -27,8 +28,13 @@ AdditionalBeanBuildItem build() {
     }
 
     @BuildStep
-    BeanDefiningAnnotationBuildItem elasticsearchClientConfigBeanDefiningAnnotation() {
-        return new BeanDefiningAnnotationBuildItem(ELASTICSEARCH_CLIENT_CONFIG, DotNames.APPLICATION_SCOPED, false);
+    void elasticsearchClientConfigSupport(BuildProducer<AdditionalBeanBuildItem> additionalBeans,
+            BuildProducer<BeanDefiningAnnotationBuildItem> beanDefiningAnnotations) {
+        // add the @ElasticsearchClientConfig class otherwise it won't be registered as a qualifier
+        additionalBeans.produce(AdditionalBeanBuildItem.builder().addBeanClass(ElasticsearchClientConfig.class).build());
+
+        beanDefiningAnnotations
+                .produce(new BeanDefiningAnnotationBuildItem(ELASTICSEARCH_CLIENT_CONFIG, DotNames.APPLICATION_SCOPED, false));
     }
 
     @BuildStep
diff --git a/extensions/elasticsearch-rest-client/deployment/src/test/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchClientConfigTest.java b/extensions/elasticsearch-rest-client/deployment/src/test/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchClientConfigTest.java
index 06c308031e9..2f56c48eff7 100644
--- a/extensions/elasticsearch-rest-client/deployment/src/test/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchClientConfigTest.java
+++ b/extensions/elasticsearch-rest-client/deployment/src/test/java/io/quarkus/elasticsearch/restclient/lowlevel/runtime/ElasticsearchClientConfigTest.java
@@ -26,30 +26,24 @@ public class ElasticsearchClientConfigTest {
 
     @Inject
     ElasticsearchConfig config;
-    @Inject
-    @ElasticsearchClientConfig
-    TestConfigurator testConfigurator;
 
     @Test
     public void testRestClientBuilderHelperWithElasticsearchClientConfig() {
         RestClientBuilderHelper.createRestClientBuilder(config).build();
-        assertTrue(testConfigurator.isInvoked());
+        assertTrue(TestConfigurator.invoked);
     }
 
     @ElasticsearchClientConfig
     @ApplicationScoped
     public static class TestConfigurator implements RestClientBuilder.HttpClientConfigCallback {
-        private boolean invoked = false;
+
+        private static boolean invoked = false;
 
         @Override
         public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder builder) {
             invoked = true;
             return builder;
         }
-
-        public boolean isInvoked() {
-            return invoked;
-        }
     }
 
 }