This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch camel-master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 1c18944fefeb8ada1830a4d3590a627ce865d978 Author: JiriOndrusek <ondrusek.j...@gmail.com> AuthorDate: Mon Mar 22 14:13:16 2021 +0100 Spring RabbitMQ integration test fails in native mode with Camel 3.9.0 --- .../rabbitmq/deployment/SpringRabbitmqProcessor.java | 13 +++++++++++-- .../spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java | 12 +++++++++--- .../spring/rabbitmq/it/SpringRabbitmqTest.java | 17 ++++++++++++++--- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java b/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java index d5c6a52..9f9fb06 100644 --- a/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java +++ b/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java @@ -16,10 +16,14 @@ */ package org.apache.camel.quarkus.component.spring.rabbitmq.deployment; +import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageProxyDefinitionBuildItem; import org.springframework.amqp.rabbit.connection.ChannelProxy; +import org.springframework.aop.SpringProxy; +import org.springframework.aop.framework.Advised; +import org.springframework.core.DecoratingProxy; class SpringRabbitmqProcessor { @@ -31,7 +35,12 @@ class SpringRabbitmqProcessor { } @BuildStep - NativeImageProxyDefinitionBuildItem initProxies() { - return new NativeImageProxyDefinitionBuildItem(ChannelProxy.class.getCanonicalName()); + void initProxies(BuildProducer<NativeImageProxyDefinitionBuildItem> proxies) { + proxies.produce(new NativeImageProxyDefinitionBuildItem(ChannelProxy.class.getCanonicalName())); + proxies.produce(new NativeImageProxyDefinitionBuildItem( + "org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer$ContainerDelegate", + SpringProxy.class.getCanonicalName(), Advised.class.getCanonicalName(), + DecoratingProxy.class.getCanonicalName())); } + } diff --git a/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java b/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java index 442c313..bafee55 100644 --- a/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java +++ b/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java @@ -20,18 +20,24 @@ package org.apache.camel.quarkus.component.spring.rabbitmq.it; import javax.enterprise.context.ApplicationScoped; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.springrabbit.SpringRabbitMQConstants; @ApplicationScoped public class SpringRabbitmqRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { + createRoute(SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER); + createRoute(SpringRabbitMQConstants.SIMPLE_MESSAGE_LISTENER_CONTAINER); + } + + private void createRoute(String type) { String url = String.format( - "spring-rabbitmq:%s?queues=myqueue&routingKey=%s&connectionFactory=#connectionFactory&autoDeclare=true", - SpringRabbitmqResource.EXCHANGE_IN_OUT, SpringRabbitmqResource.ROUTING_KEY_IN_OUT); + "spring-rabbitmq:%s?queues=%s&routingKey=%s&connectionFactory=#connectionFactory&autoDeclare=true&messageListenerContainerType=DMLC", + SpringRabbitmqResource.EXCHANGE_IN_OUT + type, type, SpringRabbitmqResource.ROUTING_KEY_IN_OUT + type); from(url) .transform(body().prepend("Hello ")) - .to(SpringRabbitmqResource.DIRECT_IN_OUT); + .to(SpringRabbitmqResource.DIRECT_IN_OUT + type); } } diff --git a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java index 2fdddec..9822030 100644 --- a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java +++ b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java @@ -20,6 +20,7 @@ import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.response.Response; +import org.apache.camel.component.springrabbit.SpringRabbitMQConstants; import org.junit.jupiter.api.Test; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.BindingBuilder; @@ -39,10 +40,20 @@ class SpringRabbitmqTest { private ConnectionFactory connectionFactory; @Test - public void testInOut() { - sendToExchange(SpringRabbitmqResource.EXCHANGE_IN_OUT, SpringRabbitmqResource.ROUTING_KEY_IN_OUT, "Sheldon"); + public void testInOutDMLC() { + testInOut(SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER); + } + + @Test + public void testInOutSMLC() { + testInOut(SpringRabbitMQConstants.SIMPLE_MESSAGE_LISTENER_CONTAINER); + } + + public void testInOut(String type) { + sendToExchange(SpringRabbitmqResource.EXCHANGE_IN_OUT + type, + SpringRabbitmqResource.ROUTING_KEY_IN_OUT + type, "Sheldon"); - getFromDirect(SpringRabbitmqResource.DIRECT_IN_OUT) + getFromDirect(SpringRabbitmqResource.DIRECT_IN_OUT + type) .then() .statusCode(200) .body(is("Hello Sheldon"));