org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[redis://{{spring.redis.host}}:{{spring.redis.port}}?serializer=#stringSerializer] <<< in route: Route(route1)[From[paho:/oneM2M/req/Mobius2/app/json?brokerU... because of No endpoint could be found for: redis://121.160.17.82:6379?serializer=#stringSerializer, please check your classpath contains the needed Camel component jar.
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:215) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:75) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:937) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:800) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:3008) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.service.BaseService.init(BaseService.java:83) ~[camel-api-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2679) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.service.BaseService.start(BaseService.java:111) ~[camel-api-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2698) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119) ~[camel-spring-3.20.2.jar:3.20.2]
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151) ~[camel-spring-3.20.2.jar:3.20.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.10.jar:2.7.10]
at com.wavus.mobiusToRedis.MobiusToRedisApplication.main(MobiusToRedisApplication.java:15) ~[classes/:na]
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found for: redis://121.160.17.82:6379?serializer=#stringSerializer, please check your classpath contains the needed Camel component jar.
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:1014) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:890) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.CamelContextHelper.resolveEndpoint(CamelContextHelper.java:127) ~[camel-support-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.SendReifier.resolveEndpoint(SendReifier.java:45) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.SendReifier.createProcessor(SendReifier.java:37) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:857) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:598) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:211) ~[camel-core-reifier-3.20.2.jar:3.20.2]
... 25 common frames omitted
해결방안
"redis://{{spring.redis.host}}:{{spring.redis.port}}?serializer=#stringSerializer" → spring-redis://{{spring.redis.host}}:{{spring.redis.port}}?serializer=#stringSerializer
해당 오류 발견시 from to url에서 mapping 안되는지 확인
org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[spring-redis://{{spring.redis.host}}:{{spring.redis.port}}?command=SET&serializer=#stringSerializer&key=testKey] <<< in route: Route(route1)[From[paho:/oneM2M/req/Mobius2/app/json?brokerU... because of Failed to resolve endpoint: spring-redis://121.160.17.82:6379?command=SET&key=testKey&serializer=%23stringSerializer due to: Failed to resolve endpoint: spring-redis://121.160.17.82:6379?command=SET&key=testKey&serializer=%23stringSerializer due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{key=testKey}]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:215) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:75) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:937) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:800) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:3008) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.service.BaseService.init(BaseService.java:83) ~[camel-api-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2679) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.service.BaseService.start(BaseService.java:111) ~[camel-api-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2698) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262) ~[camel-core-engine-3.20.2.jar:3.20.2]
at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119) ~[camel-spring-3.20.2.jar:3.20.2]
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151) ~[camel-spring-3.20.2.jar:3.20.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.26.jar:5.3.26]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.10.jar:2.7.10]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.10.jar:2.7.10]
at com.wavus.mobiusToRedis.MobiusToRedisApplication.main(MobiusToRedisApplication.java:15) ~[classes/:na]
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-redis://121.160.17.82:6379?command=SET&key=testKey&serializer=%23stringSerializer due to: Failed to resolve endpoint: spring-redis://121.160.17.82:6379?command=SET&key=testKey&serializer=%23stringSerializer due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{key=testKey}]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:1008) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:890) ~[camel-base-engine-3.20.2.jar:3.20.2]
at org.apache.camel.support.CamelContextHelper.resolveEndpoint(CamelContextHelper.java:127) ~[camel-support-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.SendReifier.resolveEndpoint(SendReifier.java:45) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.SendReifier.createProcessor(SendReifier.java:37) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:857) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:598) ~[camel-core-reifier-3.20.2.jar:3.20.2]
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:211) ~[camel-core-reifier-3.20.2.jar:3.20.2]
... 25 common frames omitted
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-redis://121.160.17.82:6379?command=SET&key=testKey&serializer=%23stringSerializer due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{key=testKey}]
at org.apache.camel.support.DefaultComponent.validateParameters(DefaultComponent.java:300) ~[camel-support-3.20.2.jar:3.20.2]
at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:192) ~[camel-support-3.20.2.jar:3.20.2]
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:974) ~[camel-base-engine-3.20.2.jar:3.20.2]
... 32 common frames omitted
@Override
public void configure() throws Exception {
from("direct:start")
.setHeader("key", constant("myKey"))
.setBody(constant("Hello World!"))
.to("redis://{{spring.redis.host}}:{{spring.redis.port}}?command=SET&serializer=#stringSerializer");
from("timer:myTimer?period=5000")
.to("redis://{{spring.redis.host}}:{{spring.redis.port}}?command=GET&serializer=#stringSerializer&key=myKey")
.log("Value from Redis: ${body}");
}
해당 오류 발견시
exchange.getMessage().setHeader(RedisConstants.COMMAND,"SET");
exchange.getMessage().setHeader(RedisConstants.KEY,"testData");
exchange.getMessage().setHeader(RedisConstants.VALUE,message);
처럼 헤더에 작성해야함 내용들을
String message = exchange.getMessage().getBody(String.class);
exchange.getMessage().setHeader(RedisConstants.COMMAND,"SET");
exchange.getMessage().setHeader(RedisConstants.KEY,"testData");
exchange.getMessage().setHeader(RedisConstants.VALUE,message);
121.160.17.82:6379> keys *
1) "\xac\xed\x00\x05t\x00\amyKey11"
2) "\xac\xed\x00\x05t\x00\x05myKey"
3) "\xac\xed\x00\x05t\x00\btestData"
\xac\xed\x00\x05t\x00\ 같은 에러가 남
참고함
https://stackoverflow.com/questions/31608394/get-set-value-from-redis-using-redistemplate
해결방안
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Bean
public StringRedisSerializer stringSerializer() {
return new StringRedisSerializer();
}
.to("spring-redis://{{spring.redis.host}}:{{spring.redis.port}}?serializer=#stringSerializer");
url 뒤에 method 명 붙이기
해결 완료
데이터 key 지우고 확인
121.160.17.82:6379> flushall
OK
121.160.17.82:6379> keys *
(empty list or set)
121.160.17.82:6379> keys *
(empty list or set)
121.160.17.82:6379> keys *
1) "testData"