v1.0.1 Add camel-disruptor for experiment

experiment
Yan 3 weeks ago
parent 7e5d4b6062
commit 1297458c60

@ -6,3 +6,5 @@ camel:
spring: spring:
activemq: activemq:
broker-url: "tcp://localhost:61616" broker-url: "tcp://localhost:61616"
app:
queue-name: "UserServiceQueue"

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId> <groupId>com.example</groupId>
<artifactId>camel-springboot-activemq6-example</artifactId> <artifactId>camel-springboot-activemq6-example</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
<name>camel-springboot-activemq6-example</name> <name>camel-springboot-activemq6-example</name>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@ -15,8 +15,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<camel.version>4.8.2</camel.version> <camel.version>4.8.3</camel.version>
<cxf.version>4.0.6</cxf.version>
<springboot.version>${project.parent.version}</springboot.version> <springboot.version>${project.parent.version}</springboot.version>
</properties> </properties>
@ -70,17 +69,15 @@
<groupId>org.apache.camel.springboot</groupId> <groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-jackson-starter</artifactId> <artifactId>camel-jackson-starter</artifactId>
</dependency> </dependency>
<!-- jax-rs json provider from jackson -->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.jakarta.rs</groupId> <groupId>org.apache.camel.springboot</groupId>
<artifactId>jackson-jakarta-rs-json-provider</artifactId> <artifactId>camel-disruptor-starter</artifactId>
</dependency> </dependency>
<!-- CXF WADL definition--> <!-- jax-rs json provider from jackson -->
<dependency> <dependency>
<groupId>org.apache.cxf</groupId> <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
<artifactId>cxf-rt-rs-service-description</artifactId> <artifactId>jackson-jakarta-rs-json-provider</artifactId>
<version>${cxf.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

@ -4,6 +4,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder; import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.bean.validator.BeanValidationException; import org.apache.camel.component.bean.validator.BeanValidationException;
import org.apache.camel.model.dataformat.JsonLibrary; import org.apache.camel.model.dataformat.JsonLibrary;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.Response;
@ -11,6 +12,9 @@ import jakarta.ws.rs.core.Response;
@Component @Component
public class CamelRouter extends RouteBuilder { public class CamelRouter extends RouteBuilder {
@Value("${app.queue-name}")
private String queueName;
@Override @Override
public void configure() throws Exception { public void configure() throws Exception {
// very raw way, just to handle the validation responses // very raw way, just to handle the validation responses
@ -19,9 +23,13 @@ public class CamelRouter extends RouteBuilder {
.setBody(simple("${exchangeProperty.CamelExceptionCaught.getMessage()}")); .setBody(simple("${exchangeProperty.CamelExceptionCaught.getMessage()}"));
from("cxfrs:/api?resourceClasses=" + UserService.class.getName() + "&bindingStyle=SimpleConsumer" from("cxfrs:/api?resourceClasses=" + UserService.class.getName() + "&bindingStyle=SimpleConsumer"
+ "&providers=jaxrsProvider&loggingFeatureEnabled=true").to("bean-validator:user") + "&providers=jaxrsProvider&loggingFeatureEnabled=true").to("log:cxfrs-log?showAll=true")
.setHeader(Exchange.BEAN_METHOD_NAME, simple("${header.operationName}")).to("activemq6:queue:UserService"); .to("bean-validator:user").setHeader(Exchange.BEAN_METHOD_NAME, simple("${header.operationName}"))
from("activemq6:queue:UserService").to("log:camel-cxf-log?showAll=true").bean(UserServiceImpl.class).marshal() .to("activemq6:queue:"+queueName);
from("activemq6:queue:"+queueName).to("log:activemq6-log?showAll=true").to("disruptor:UserDisruptor");
from("disruptor:UserDisruptor").to("log:disruptor-log?showAll=true").bean(UserServiceImpl.class).marshal()
.json(JsonLibrary.Jackson); .json(JsonLibrary.Jackson);
} }

Loading…
Cancel
Save