camel - spring booot redis 에러

DEV_Eastwoo·2023년 6월 15일

1. 에러

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 안되는지 확인

2. 에러

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);

처럼 헤더에 작성해야함 내용들을

3. 에러

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"
profile
backend 개발

0개의 댓글