I want to use integration using Camel Karavan. The essence of integration is to receive messages from REST service and transfer them to RabbitMq. To create a connection to RabbitMq I made Bean.
Here is my yaml file:
- rest:
id: rest-6f81
post:
- id: post-78d2
path: /order-status-update
to: direct:internal
consumes: application/json
- beans:
- constructors: {}
name: RabbitMQConnectionFactory
properties:
host: localhost
port: '5772'
username: Test
password: Test
type: org.springframework.amqp.rabbit.connection.CachingConnectionFactory
- route:
id: route-d7a0
nodePrefixId: route-425
from:
id: from-b82a
uri: direct
parameters:
name: internal
steps:
- log:
id: log-90a7
message: ${body}
- to:
id: to-bcd8
uri: spring-rabbitmq
parameters:
exchangeName: test
testConnectionOnStartup: true
connectionFactory: '#bean:RabbitMQConnectionFactory'
At startup.
jbang "-Dcamel.jbang.version=4.3.0" camel@apache/camel run *
I get the following error logs:
2024-01-10 22:44:26.558 INFO 29564 --- [ main] org.apache.camel.main.MainSupport : Apache Camel (JBang) 4.3.0 is starting
2024-01-10 22:44:26.590 INFO 29564 --- [ main] org.apache.camel.main.MainSupport : Additional files added to classpath: event-gateway.json в общем
2024-01-10 22:44:26.695 INFO 29564 --- [ main] org.apache.camel.main.MainSupport : Using Java 17.0.9 with PID 29564. Started by User in C:\Users\user\Desktop\Karavan1
org.apache.camel.RuntimeCamelException: Error pre-parsing resource: file:testts.camel.yaml
at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:913)
at org.apache.camel.main.RoutesConfigurer.doConfigureModeline(RoutesConfigurer.java:374)
at org.apache.camel.main.RoutesConfigurer.configureModeline(RoutesConfigurer.java:300)
at org.apache.camel.main.BaseMainSupport.modelineRoutes(BaseMainSupport.java:594)
at org.apache.camel.main.BaseMainSupport.autoconfigure(BaseMainSupport.java:447)
at org.apache.camel.main.MainSupport.autoconfigure(MainSupport.java:73)
at org.apache.camel.main.KameletMain.autoconfigure(KameletMain.java:626)
at org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:672)
at org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:339)
at org.apache.camel.main.KameletMain.doInit(KameletMain.java:314)
at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
at org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1059)
at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:781)
at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:290)
at org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
at org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:36)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:172)
at main.CamelJBang.main(CamelJBang.java:36)
Caused by: java.lang.RuntimeException: Error creating bean: RabbitMQConnectionFactory of type: #class:org.springframework.amqp.rabbit.connection.CachingConnectionFactory
at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:212)
at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer$BeansCustomizer.configure(BeansDeserializer.java:235)
at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseNode(YamlRoutesBuilderLoader.java:933)
at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.lambda$preParseRoute$5(YamlRoutesBuilderLoader.java:911)
at java.base/java.util.Optional.map(Optional.java:260)
at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:911)
... 26 more
Caused by: java.lang.ClassNotFoundException: org.springframework.amqp.rabbit.connection.CachingConnectionFactory
at org.apache.camel.impl.engine.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:113)
at org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.newInstance(BeansDeserializer.java:185)
at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:204)
... 31 more
I think the key problem is this: java.lang.ClassNotFoundException: org.springframework.amqp.rabbit.connection.CachingConnectionFactory
Can anyone tell me how to fix this?
I use camel-karavan as VS Code extension.
This is also reported at Karavan https://github.com/apache/camel-karavan/discussions/1060
And there you can see the solution.