You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "JinyuChen97 (via GitHub)" <gi...@apache.org> on 2026/05/29 11:46:02 UTC

[PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

JinyuChen97 opened a new pull request, #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511

   This example demonstrates integration of Apache ActiveMQ Artemis (AMQ Broker) with Keycloak authentication in a Camel Quarkus application.
   
   Features:
   - REST endpoint for order submission with Keycloak authentication
   - SOAP endpoint for inventory management with Keycloak security policy
   - JMS integration using AMQ Broker for asynchronous order processing
   - Admin endpoint with role-based access control (RBAC)
   - Keycloak component for user management
   
   The example supports:
   - Development mode with Dev Services (auto-start Keycloak and Artemis)
   - JVM mode
   - Native mode
   - Kubernetes deployment with complete YAML manifests and testing guide
   
   
   On-Behalf-Of: Jinyu Chen <as...@gmail.com>
   
   Note that the `main` branch points at the latest stable Camel Quarkus release.
   Pull requests should be generally send against the `camel-quarkus-main` branch pointing at the current Camel Quarkus SNAPSHOT.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4647436339

   After discussed with Torsten, the example is changed to REST endpoint calls SOAP service synchronously and returns response to client. The order events are asynchronously sent to JMS topic that listen by multiple consumer process events: audit logging, email notification, cache.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4611079045

   > Looks a great start, generally speaking, there is a question whether the example could be less verbose ? Like do we really need equals method ? Do we really need that much properties in domain pojos ?
   > 
   > The ideal situation would be that each new lines introduced serves the demo purpose as much as possible. So that, users learning camel are not lost into details and complexities that could live in their own example documetation...
   > 
   > Does it make sense ? it's open for discussion for sure :)
   
   thanks for the advice! I have simplify some domain objects, processor... Currently waiting for the feedback from Ivo or Torsten to see if this REST -> SOAP example is fine.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3346909144


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   Ok - I actually thought we [fixed](https://github.com/apache/camel-quarkus/blob/fd46ff007e24621f1c6b9c82f52f87bcb3fa4fdb/extensions-support/jaxb/deployment/src/main/java/org/apache/camel/quarkus/support/jaxb/deployment/JaxbProcessor.java#L26) those kinds of issue.
   
   The acceptable workaround for now will be to add `camel-quarkus-jaxb` to the project and I'll think of a better solution for the Camel Quarkus core project for the future.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3375123102


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   So, have we applied the workaround ? The camel-quarkus-jaxb dependency seems not present in pom.xml ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4629990962

   Heads up that some versions across all other projects have been updated: 
   
   * Quarkus platform - 3.36.1
   * Quarkus artemis - 3.14.3
   * Surefire / Failsafe - 3.5.6
   
   Please ensure this project is updated to be in sync.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3332862220


##########
amq-broker-keycloak/src/main/java/org/acme/routes/SoapInventoryRoute.java:
##########
@@ -14,25 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.acme.http.pqc.profiles;
+package org.acme.routes;
 
-import java.util.Map;
+import jakarta.enterprise.context.ApplicationScoped;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
 
-import io.quarkus.test.junit.QuarkusTestProfile;
-
-/**
- * Test profile for PQC-only configuration (no fallback).
- * Activates the "pqc-only" profile which configures X25519MLKEM768 ONLY.
- */
-public class PqcOnlyProfile implements QuarkusTestProfile {
-
-    @Override
-    public String getConfigProfile() {
-        return "pqc-only";
-    }
+@ApplicationScoped
+public class SoapInventoryRoute extends RouteBuilder {
 
     @Override
-    public Map<String, String> getConfigOverrides() {
-        return Map.of("jdk.tls.namedGroups", "X25519MLKEM768");
+    public void configure() {
+        from("cxf:bean:inventoryService")

Review Comment:
   Are we forced to use CXF to demo keycloak policy ? Would cxf brings an extra complexity layer for the user to understand or it's ok ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3340738738


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   you mean the quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory?  
   yes, it is needed when I ran the native test, it throwed the following error: 
   Error: Class initialization of org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory failed caused by: java.lang.ClassNotFoundException: io.micrometer.jakarta9.instrument.jms.JmsProcessObservationConvention, do we need to fix this in camel quarkus?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3379095155


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   > So, have we applied the workaround ? The camel-quarkus-jaxb dependency seems not present in pom.xml ?
   
   it's camel-quarkus-support-jaxb added in pom



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3375110992


##########
amq-broker-keycloak/src/main/java/org/acme/routes/SoapInventoryRoute.java:
##########
@@ -14,25 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.acme.http.pqc.profiles;
+package org.acme.routes;
 
-import java.util.Map;
+import jakarta.enterprise.context.ApplicationScoped;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
 
-import io.quarkus.test.junit.QuarkusTestProfile;
-
-/**
- * Test profile for PQC-only configuration (no fallback).
- * Activates the "pqc-only" profile which configures X25519MLKEM768 ONLY.
- */
-public class PqcOnlyProfile implements QuarkusTestProfile {
-
-    @Override
-    public String getConfigProfile() {
-        return "pqc-only";
-    }
+@ApplicationScoped
+public class SoapInventoryRoute extends RouteBuilder {
 
     @Override
-    public Map<String, String> getConfigOverrides() {
-        return Map.of("jdk.tls.namedGroups", "X25519MLKEM768");
+    public void configure() {
+        from("cxf:bean:inventoryService")

Review Comment:
   Ok, the integration logic has been changed following intent clarification



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3333112719


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   Is this definitely needed? If so we need to investigate why.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "zhfeng (via GitHub)" <gi...@apache.org>.
zhfeng commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3341127021


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   Hmm, it looks like an issue to work with micrometer and can you find the dependencies at the runtime and maybe we can disable it?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3380729068


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   Ok, the comment is now found. Well done :+1: 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton merged PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4651613805

   Ok, a last thing following the route design. Would the name amq-broker-keycloak be what users expect ?
   Maybe we could name by keywords ala rest-keycloak-soap-jms ? What do you think ?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3347455733


##########
amq-broker-keycloak/src/main/java/org/acme/routes/SoapInventoryRoute.java:
##########
@@ -14,25 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.acme.http.pqc.profiles;
+package org.acme.routes;
 
-import java.util.Map;
+import jakarta.enterprise.context.ApplicationScoped;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
 
-import io.quarkus.test.junit.QuarkusTestProfile;
-
-/**
- * Test profile for PQC-only configuration (no fallback).
- * Activates the "pqc-only" profile which configures X25519MLKEM768 ONLY.
- */
-public class PqcOnlyProfile implements QuarkusTestProfile {
-
-    @Override
-    public String getConfigProfile() {
-        return "pqc-only";
-    }
+@ApplicationScoped
+public class SoapInventoryRoute extends RouteBuilder {
 
     @Override
-    public Map<String, String> getConfigOverrides() {
-        return Map.of("jdk.tls.namedGroups", "X25519MLKEM768");
+    public void configure() {
+        from("cxf:bean:inventoryService")

Review Comment:
   The requirement of this example mentioned that nice to include REST and SOAP service. Waiting comment from Ivo and Torsten to see if this REST -> SOAP example flow is fine. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3332800825


##########
amq-broker-keycloak/pom.xml:
##########
@@ -17,15 +17,16 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-examples-http-pqc-j21</artifactId>
+    <artifactId>camel-quarkus-examples-amq-broker-keycloak</artifactId>
     <groupId>org.apache.camel.quarkus.examples</groupId>
-    <version>3.37.0-SNAPSHOT</version>
+    <version>3.35.0</version>

Review Comment:
   Following the next release, this version should be 3.36 ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4591187896

   Looks a great start, generally speaking, there is a question whether the example could be less verbose ? Like do we really need equals method ? Do we really need that much properties in domain pojos ?
   
   The ideal situation would be that each new lines introduced serves the demo purpose as much as possible. So that, users learning camel are not lost into details and complexities that could live in their own example documetation...
   
   Does it make sense ? it's open for discussion for sure :)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3333104967


##########
amq-broker-keycloak/README.adoc:
##########
@@ -0,0 +1,552 @@
+= AMQ Broker and Keycloak Integration: A Camel Quarkus example
+:cq-example-description: An example that demonstrates integration of AMQ Broker with Keycloak security using REST and SOAP endpoints
+
+{cq-description}
+
+TIP: Check the https://camel.apache.org/camel-quarkus/latest/first-steps.html[Camel Quarkus User guide] for prerequisites
+and other general information.
+
+== Overview
+
+This example demonstrates how to integrate Apache ActiveMQ Artemis (AMQ Broker) with Keycloak authentication in a Camel Quarkus application.
+The application provides both REST and SOAP endpoints that are secured using Keycloak authentication policies.
+
+The example includes:
+
+* *REST endpoint* for order submission (`/api/orders/submit`) - requires authentication
+* *REST endpoint* for admin operations (`/api/admin/users`) - requires authentication and admin role
+* *SOAP endpoint* for inventory management (`/services/inventory`) - secured with Keycloak
+* *JMS integration* using AMQ Broker to process orders asynchronously via `order-queue`
+* *Keycloak component* for user management and authentication
+
+== Prerequisites
+
+The example application requires both a Keycloak instance and an AMQ Broker (Apache ActiveMQ Artemis) instance.
+
+You do not need to provide these instances yourself as long as you play with the example code in dev mode
+(a.k.a. `mvn quarkus:dev`) - read more https://quarkus.io/guides/getting-started#development-mode[here]
+or as long as you only run the supplied tests (`mvn test`).
+In those situations, Quarkus tooling automatically starts both Keycloak and Artemis containers for you via
+https://quarkus.io/guides/security-openid-connect-dev-services[Quarkus Dev Services] and
+https://docs.quarkiverse.io/quarkus-artemis/dev/index.html#_dev_services[Artemis Dev Services],
+and it also configures the application so that you do not need to touch anything in `application.properties`.
+
+[[users-configuration]]
+
+=== Users configuration
+
+In all scenarios which we will cover, we will need two users:
+- *customer* (with role `customer-role` and password `customer-pass`) - can submit orders
+- *admin* (with role `admin-role` and password `admin-pass`) - can submit orders and access admin endpoints
+
+WARNING: These hardcoded credentials are for demonstration purposes only and should never be used in production.
+
+=== Quarkus OIDC
+
+We use the approach described in https://quarkus.io/guides/security-openid-connect-client-reference[Quarkus Open ID Connect]
+to protect the application with Keycloak as our OIDC provider. This automatically secures our
+Camel Quarkus routes using the `keycloakPolicy` policy defined in the application.
+
+== Start in Development mode
+
+=== Run the app with Dev Services
+
+Run the application in development mode. Quarkus will automatically start Keycloak and AMQ Broker containers:
+
+[source,shell]
+----
+$ mvn clean compile quarkus:dev
+----
+
+The above command compiles the project, starts the application, and starts both Keycloak and AMQ Broker instances via Dev Services.
+The Quarkus tooling watches for changes in your workspace. Any modifications in your project will automatically take effect
+in the running application.
+
+TIP: Please refer to the Development mode section of
+https://camel.apache.org/camel-quarkus/latest/first-steps.html#_development_mode[Camel Quarkus User guide] for more details.
+
+Now you can move on to the <<playground>> section with the assumption that `KEYCLOAK_URL=http://localhost:8082` and `APP_URL=http://localhost:8080`.
+
+[[playground]]
+
+=== Playground
+
+The first thing to do is to obtain the Bearer token from the running Keycloak instance for each created user. Save those tokens for further authentication.
+
+For the `customer` user, extract value from response of key `access_token` and call it `CUSTOMER_TOKEN`:
+
+[source,shell]
+----
+$ curl -d "client_id=quarkus-client" -d "client_secret=secret" -d "username=customer" -d "password=customer-pass" -d "grant_type=password" $KEYCLOAK_URL/realms/quarkus/protocol/openid-connect/token
+----
+
+For the `admin` user, extract value from response of key `access_token` and call it `ADMIN_TOKEN`:
+
+[source,shell]
+----
+$ curl -d "client_id=quarkus-client" -d "client_secret=secret" -d "username=admin" -d "password=admin-pass" -d "grant_type=password" $KEYCLOAK_URL/realms/quarkus/protocol/openid-connect/token
+----
+
+Now we are ready to try the HTTP endpoints:
+
+==== Submit an order (authenticated endpoint)
+
+The `customer` user can submit orders (you should receive `200 OK` and the order will be sent to the JMS queue):
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $CUSTOMER_TOKEN" -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-001","customerId":"CUST-001","productId":"PRODUCT-001","quantity":5}' \
+  $APP_URL/api/orders/submit
+----
+
+The `admin` user can also submit orders:
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-002","customerId":"CUST-002","productId":"PRODUCT-002","quantity":10}' \
+  $APP_URL/api/orders/submit
+----
+
+Without authentication, the request should fail (you should receive `401 Unauthorized`):
+
+[source,shell]
+----
+$ curl -i -X POST -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-003","customerId":"CUST-003","productId":"PRODUCT-003","quantity":3}' \
+  $APP_URL/api/orders/submit
+----
+
+==== Access admin endpoint (authorized endpoint)
+
+The `customer` user cannot access admin endpoints (you should receive `403 Forbidden`):
+
+[source,shell]
+----
+$ curl -i -X GET -H "Authorization: Bearer $CUSTOMER_TOKEN" $APP_URL/api/admin/users
+----
+
+The `admin` user can access admin endpoints (you should receive `200 OK` with a list of Keycloak users):
+
+[source,shell]
+----
+$ curl -i -X GET -H "Authorization: Bearer $ADMIN_TOKEN" $APP_URL/api/admin/users
+----
+
+==== SOAP Inventory Service
+
+The SOAP endpoint is available at `/services/inventory` and is also secured with Keycloak authentication.
+You can test it using a SOAP client tool like SoapUI or curl with SOAP envelope:
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: text/xml" \
+  -d '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+        <soap:Body>
+          <tns:UpdateStockRequest xmlns:tns="http://acme.org/inventory">
+            <productId>PRODUCT-001</productId>
+            <quantity>5</quantity>
+          </tns:UpdateStockRequest>
+        </soap:Body>
+      </soap:Envelope>' \
+  $APP_URL/services/inventory
+----
+
+Expected response:
+[source,xml]
+----
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns2:UpdateStockResponse xmlns:ns2="http://acme.org/inventory">
+      <success>true</success>
+      <message>Stock updated successfully</message>
+      <newStock>95</newStock>
+    </ns2:UpdateStockResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
+[[external-instances-configuration]]
+
+== Prerequisites for externally running Keycloak and AMQ Broker instances
+
+For the next steps, we need to have externally running Keycloak and AMQ Broker instances.
+
+=== Run Keycloak
+
+You can start a Keycloak instance easily via Docker:
+
+[source,shell]
+----
+$ docker run --name keycloak_amq_demo -p 8082:8080 \
+        -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \
+        quay.io/keycloak/keycloak:latest \
+        start-dev
+----
+
+=== Configure the Keycloak realm
+
+Then go to `http://localhost:8082/` click on `Administration Console` and login with `admin:admin`.
+
+Create a new realm named `quarkus` with the following configuration:
+
+*Create a client:*
+- Client ID: `quarkus-client`
+- Client authentication: On
+- Direct access grants: Enabled
+- Client secret: `secret`
+
+*Create two roles:*
+- `customer-role`
+- `admin-role`
+
+*Create two users:*
+- Username: `customer`, Password: `customer-pass`, Email: `customer@example.com`, Role: `customer-role`
+- Username: `admin`, Password: `admin-pass`, Email: `admin@example.com`, Role: `admin-role`
+
+IMPORTANT: For each user, you must set:
+- Email address (required - without it you'll get "Account is not fully set up" error)
+- Email verified: On
+- Password: Set as non-temporary
+- Assign the appropriate role
+
+TIP: Make sure to enable direct access grants for the client to support password grant type.
+
+=== Run AMQ Broker (Apache ActiveMQ Artemis)
+
+You can start an AMQ Broker instance via Docker:
+
+[source,shell]
+----
+$ docker run --name artemis_amq_demo -d -p 61616:61616 -p 8161:8161 \
+        -e AMQ_USER=admin -e AMQ_PASSWORD=admin \
+        quay.io/artemiscloud/activemq-artemis-broker:latest

Review Comment:
   Should also use `quay.io/arkmq-org/activemq-artemis-broker`.



##########
amq-broker-keycloak/pom.xml:
##########
@@ -17,15 +17,16 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-examples-http-pqc-j21</artifactId>
+    <artifactId>camel-quarkus-examples-amq-broker-keycloak</artifactId>
     <groupId>org.apache.camel.quarkus.examples</groupId>
-    <version>3.37.0-SNAPSHOT</version>
+    <version>3.35.0</version>

Review Comment:
   If the PR targets the `camel-quarkus-main` branch then the version should be `3.37.0-SNAPSHOT`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4576179201

   The platform version should probably be upgraded after the recent release of camel-quarkus main branch:
   
   ```
   Caused by: org.apache.maven.plugin.MojoFailureException: Found 5 consistency issues:
    - Expected <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>, found io.quarkus.platform in ./amq-broker-keycloak/pom.xml
    - Expected <quarkus.platform.version>3.36.0</quarkus.platform.version>, found 3.35.1 in ./amq-broker-keycloak/pom.xml
    - Expected <camel-quarkus.platform.group-id>org.apache.camel.quarkus</camel-quarkus.platform.group-id>, found ${quarkus.platform.group-id} in ./amq-broker-keycloak/pom.xml
    - Expected <camel-quarkus.platform.artifact-id>camel-quarkus-bom</camel-quarkus.platform.artifact-id>, found quarkus-camel-bom in ./amq-broker-keycloak/pom.xml
    - Expected <camel-quarkus.platform.version>3.37.0-SNAPSHOT</camel-quarkus.platform.version>, found ${quarkus.platform.version} in ./amq-broker-keycloak/pom.xml
   
   You may want to run mvn org.l2x6.cq:cq-maven-plugin:2.10.0:examples-set-platform -Dcq.camel-quarkus.version=3.37.0-SNAPSHOT
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [CEQ-9957]Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "aldettinger (via GitHub)" <gi...@apache.org>.
aldettinger commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3332924338


##########
amq-broker-keycloak/README.adoc:
##########
@@ -0,0 +1,552 @@
+= AMQ Broker and Keycloak Integration: A Camel Quarkus example
+:cq-example-description: An example that demonstrates integration of AMQ Broker with Keycloak security using REST and SOAP endpoints
+
+{cq-description}
+
+TIP: Check the https://camel.apache.org/camel-quarkus/latest/first-steps.html[Camel Quarkus User guide] for prerequisites
+and other general information.
+
+== Overview
+
+This example demonstrates how to integrate Apache ActiveMQ Artemis (AMQ Broker) with Keycloak authentication in a Camel Quarkus application.
+The application provides both REST and SOAP endpoints that are secured using Keycloak authentication policies.
+
+The example includes:
+
+* *REST endpoint* for order submission (`/api/orders/submit`) - requires authentication
+* *REST endpoint* for admin operations (`/api/admin/users`) - requires authentication and admin role
+* *SOAP endpoint* for inventory management (`/services/inventory`) - secured with Keycloak
+* *JMS integration* using AMQ Broker to process orders asynchronously via `order-queue`
+* *Keycloak component* for user management and authentication
+
+== Prerequisites
+
+The example application requires both a Keycloak instance and an AMQ Broker (Apache ActiveMQ Artemis) instance.
+
+You do not need to provide these instances yourself as long as you play with the example code in dev mode
+(a.k.a. `mvn quarkus:dev`) - read more https://quarkus.io/guides/getting-started#development-mode[here]
+or as long as you only run the supplied tests (`mvn test`).
+In those situations, Quarkus tooling automatically starts both Keycloak and Artemis containers for you via
+https://quarkus.io/guides/security-openid-connect-dev-services[Quarkus Dev Services] and
+https://docs.quarkiverse.io/quarkus-artemis/dev/index.html#_dev_services[Artemis Dev Services],
+and it also configures the application so that you do not need to touch anything in `application.properties`.
+
+[[users-configuration]]
+
+=== Users configuration
+
+In all scenarios which we will cover, we will need two users:
+- *customer* (with role `customer-role` and password `customer-pass`) - can submit orders
+- *admin* (with role `admin-role` and password `admin-pass`) - can submit orders and access admin endpoints
+
+WARNING: These hardcoded credentials are for demonstration purposes only and should never be used in production.
+
+=== Quarkus OIDC
+
+We use the approach described in https://quarkus.io/guides/security-openid-connect-client-reference[Quarkus Open ID Connect]
+to protect the application with Keycloak as our OIDC provider. This automatically secures our
+Camel Quarkus routes using the `keycloakPolicy` policy defined in the application.
+
+== Start in Development mode
+
+=== Run the app with Dev Services
+
+Run the application in development mode. Quarkus will automatically start Keycloak and AMQ Broker containers:
+
+[source,shell]
+----
+$ mvn clean compile quarkus:dev
+----
+
+The above command compiles the project, starts the application, and starts both Keycloak and AMQ Broker instances via Dev Services.
+The Quarkus tooling watches for changes in your workspace. Any modifications in your project will automatically take effect
+in the running application.
+
+TIP: Please refer to the Development mode section of
+https://camel.apache.org/camel-quarkus/latest/first-steps.html#_development_mode[Camel Quarkus User guide] for more details.
+
+Now you can move on to the <<playground>> section with the assumption that `KEYCLOAK_URL=http://localhost:8082` and `APP_URL=http://localhost:8080`.
+
+[[playground]]
+
+=== Playground
+
+The first thing to do is to obtain the Bearer token from the running Keycloak instance for each created user. Save those tokens for further authentication.
+
+For the `customer` user, extract value from response of key `access_token` and call it `CUSTOMER_TOKEN`:
+
+[source,shell]
+----
+$ curl -d "client_id=quarkus-client" -d "client_secret=secret" -d "username=customer" -d "password=customer-pass" -d "grant_type=password" $KEYCLOAK_URL/realms/quarkus/protocol/openid-connect/token
+----
+
+For the `admin` user, extract value from response of key `access_token` and call it `ADMIN_TOKEN`:
+
+[source,shell]
+----
+$ curl -d "client_id=quarkus-client" -d "client_secret=secret" -d "username=admin" -d "password=admin-pass" -d "grant_type=password" $KEYCLOAK_URL/realms/quarkus/protocol/openid-connect/token
+----
+
+Now we are ready to try the HTTP endpoints:
+
+==== Submit an order (authenticated endpoint)
+
+The `customer` user can submit orders (you should receive `200 OK` and the order will be sent to the JMS queue):
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $CUSTOMER_TOKEN" -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-001","customerId":"CUST-001","productId":"PRODUCT-001","quantity":5}' \
+  $APP_URL/api/orders/submit
+----
+
+The `admin` user can also submit orders:
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-002","customerId":"CUST-002","productId":"PRODUCT-002","quantity":10}' \
+  $APP_URL/api/orders/submit
+----
+
+Without authentication, the request should fail (you should receive `401 Unauthorized`):
+
+[source,shell]
+----
+$ curl -i -X POST -H "Content-Type: application/json" \
+  -d '{"orderId":"ORDER-003","customerId":"CUST-003","productId":"PRODUCT-003","quantity":3}' \
+  $APP_URL/api/orders/submit
+----
+
+==== Access admin endpoint (authorized endpoint)
+
+The `customer` user cannot access admin endpoints (you should receive `403 Forbidden`):
+
+[source,shell]
+----
+$ curl -i -X GET -H "Authorization: Bearer $CUSTOMER_TOKEN" $APP_URL/api/admin/users
+----
+
+The `admin` user can access admin endpoints (you should receive `200 OK` with a list of Keycloak users):
+
+[source,shell]
+----
+$ curl -i -X GET -H "Authorization: Bearer $ADMIN_TOKEN" $APP_URL/api/admin/users
+----
+
+==== SOAP Inventory Service
+
+The SOAP endpoint is available at `/services/inventory` and is also secured with Keycloak authentication.
+You can test it using a SOAP client tool like SoapUI or curl with SOAP envelope:
+
+[source,shell]
+----
+$ curl -i -X POST -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: text/xml" \
+  -d '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+        <soap:Body>
+          <tns:UpdateStockRequest xmlns:tns="http://acme.org/inventory">
+            <productId>PRODUCT-001</productId>
+            <quantity>5</quantity>
+          </tns:UpdateStockRequest>
+        </soap:Body>
+      </soap:Envelope>' \
+  $APP_URL/services/inventory
+----
+
+Expected response:
+[source,xml]
+----
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns2:UpdateStockResponse xmlns:ns2="http://acme.org/inventory">
+      <success>true</success>
+      <message>Stock updated successfully</message>
+      <newStock>95</newStock>
+    </ns2:UpdateStockResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
+[[external-instances-configuration]]
+
+== Prerequisites for externally running Keycloak and AMQ Broker instances
+
+For the next steps, we need to have externally running Keycloak and AMQ Broker instances.
+
+=== Run Keycloak
+
+You can start a Keycloak instance easily via Docker:
+
+[source,shell]
+----
+$ docker run --name keycloak_amq_demo -p 8082:8080 \
+        -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \
+        quay.io/keycloak/keycloak:latest \
+        start-dev
+----
+
+=== Configure the Keycloak realm
+
+Then go to `http://localhost:8082/` click on `Administration Console` and login with `admin:admin`.
+
+Create a new realm named `quarkus` with the following configuration:
+
+*Create a client:*
+- Client ID: `quarkus-client`
+- Client authentication: On
+- Direct access grants: Enabled
+- Client secret: `secret`
+
+*Create two roles:*
+- `customer-role`
+- `admin-role`
+
+*Create two users:*
+- Username: `customer`, Password: `customer-pass`, Email: `customer@example.com`, Role: `customer-role`
+- Username: `admin`, Password: `admin-pass`, Email: `admin@example.com`, Role: `admin-role`
+
+IMPORTANT: For each user, you must set:
+- Email address (required - without it you'll get "Account is not fully set up" error)
+- Email verified: On
+- Password: Set as non-temporary
+- Assign the appropriate role
+
+TIP: Make sure to enable direct access grants for the client to support password grant type.
+
+=== Run AMQ Broker (Apache ActiveMQ Artemis)
+
+You can start an AMQ Broker instance via Docker:
+
+[source,shell]
+----
+$ docker run --name artemis_amq_demo -d -p 61616:61616 -p 8161:8161 \
+        -e AMQ_USER=admin -e AMQ_PASSWORD=admin \
+        quay.io/artemiscloud/activemq-artemis-broker:latest

Review Comment:
   For docker related commande lines, maybe pinning to explicit versions would be preferred to `latest` ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#issuecomment-4656925561

   Sorry @JinyuChen97, another request. I just merged https://github.com/apache/camel-quarkus-examples/pull/518. Please rebase and add this new project to the list of modules in the root project `pom.xml`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "JinyuChen97 (via GitHub)" <gi...@apache.org>.
JinyuChen97 commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3343137767


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   After investigation by using quarkus.native.additional-build-args=-H:+PrintClassInitialization, This issue seems triggered by the cxf-soap + jms combination in native mode. During native image build, Quarkus's JaxbProcessor scans @XmlRootElement annotations on Camel route definitions. because of CXF is there, this creates a deep reference chain: CxfEndpoint → JmsEndpoint → AbstractMessageListenerContainer → ObservationFactory (inner class). GraalVM then initializes ObservationFactory at build-time, execute it's static block which requires DefaultJmsProcessObservationConvention from micrometer-jakarta9.
   
   JMS integration tests don't have this issue because they don't use CXF. Without CXF, the scanning is shallow and ObservationFactory is not included. I also verified this by adding cxf-soap dependency to the jms-jpa example, and it reproduced the same error. Please correct if im wrong. and also Is this kind of issue caused by combination need to be fixed in camel quarkus project? or need to mentioned somewhere?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Add AMQ Broker and Keycloak integration example [camel-quarkus-examples]

Posted by "jamesnetherton (via GitHub)" <gi...@apache.org>.
jamesnetherton commented on code in PR #511:
URL: https://github.com/apache/camel-quarkus-examples/pull/511#discussion_r3340924744


##########
amq-broker-keycloak/src/main/resources/application.properties:
##########
@@ -0,0 +1,70 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Camel
+camel.context.name = amq-broker-keycloak-example
+
+# AMQ Artemis (dev services auto-start)
+%prod.quarkus.artemis.url=tcp://localhost:61616
+%prod.quarkus.artemis.username=admin
+%prod.quarkus.artemis.password=admin
+
+# Production HTTP port
+%prod.quarkus.http.port=8081
+
+# Keycloak OIDC
+%prod.quarkus.oidc.auth-server-url=http://localhost:8082/realms/quarkus
+quarkus.oidc.client-id=quarkus-client
+quarkus.oidc.application-type=service
+
+# Keycloak Dev Services
+quarkus.keycloak.devservices.port=8082
+quarkus.keycloak.devservices.users.customer=customer-pass
+quarkus.keycloak.devservices.roles.customer=customer-role
+quarkus.keycloak.devservices.users.admin=admin-pass
+quarkus.keycloak.devservices.roles.admin=admin-role
+
+# HTTP Security - REST endpoints protected by Quarkus OIDC
+quarkus.http.auth.permission.customer.paths=/api/orders/*
+quarkus.http.auth.permission.customer.policy=authenticated
+quarkus.http.auth.permission.admin.paths=/api/admin/*
+quarkus.http.auth.permission.admin.policy=admin-policy
+quarkus.http.auth.policy.admin-policy.roles-allowed=admin-role
+
+# Keycloak Component Configuration (for Camel Keycloak component)
+camel.component.keycloak.server-url=http://localhost:8082
+camel.component.keycloak.realm=quarkus
+camel.component.keycloak.client-id=quarkus-client
+camel.component.keycloak.client-secret=${QUARKUS_OIDC_CREDENTIALS_SECRET:secret}
+
+# CXF SOAP
+quarkus.cxf.path=/services
+soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Kubernetes
+quarkus.kubernetes.env.secrets=quarkus-keycloak
+
+# Dev Configuration
+%dev.quarkus.artemis.devservices.enabled=true
+%dev.soap.inventory.client.address=http://localhost:8080/services/inventory
+
+# Test Configuration
+%test.quarkus.artemis.devservices.enabled=true
+%test.soap.inventory.client.address=http://localhost:8081/services/inventory
+
+# Native Configuration
+quarkus.native.additional-build-args=--initialize-at-run-time=org.springframework.jms.listener.AbstractMessageListenerContainer$ObservationFactory

Review Comment:
   > do we need to fix this in camel quarkus?
   
   Would be good to understand why the issue happens in this example and why we don't see it in the JMS integration tests run in the main Camel Quarkus project
   
   If it turns out to be a pain to fix / investigate, then we can just open an issue in the Camel Quarkus project and then link to it here via a TODO comment in application.properties.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org