spring - 'FailedToCreateRouteException' Amazon SQS 将 Netflix-Hystrix 引入 Spring 项目
问题描述
我正在尝试将 Hystrix 引入我的 Spring 项目,但是当我将以下依赖项添加到我的 pom 时(尝试从 1.4.4 到最新版本 2.1.1):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
我得到以下异常:
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route queue-name-consumer: Route(queue-name-consumer)[[From[aws-sqs://u... because of The specified queue does not exist or you do not have access to it. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue)
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:147) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:3949) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3856) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3494) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:209) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3253) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272) ~[camel-core-2.22.2.jar:2.22.2]
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3249) ~[camel-core-2.22.2.jar:2.22.2]
我正在使用: - Spring Boot 2.0.5 - Camel 2.22.2 - AWS-Java-SDK 1.11.381
我的 SQS 队列在我的 spring 应用程序中以格式配置
@Configuration
public class QueueConfig implements CamelContextAware {
private final AmazonSQSAsync amazonSQSClient;
private CamelContext camelContext;
@Autowired
public QueueConfig(AmazonSQSAsync amazonSQSClient) {
this.amazonSQSClient = amazonSQSClient;
}
@Override
public void setCamelContext(CamelContext camelContext) {
this.camelContext = camelContext;
}
@Override
public CamelContext getCamelContext() {
return camelContext;
}
@Bean(name = "ExampleListenerBean)
public MessageListener<Exchange> amazonMessageListener(
RequestHandler handler,
Acknowledger<AmazonMessage> acknowledger) {
MessageListener<Exchange> listener =
new AmazonMessageListener<>(handler, acknowledger, new CamelSQSMessageConverter());
return listener;
}
@Bean(name = "ExampleRequestRouteDefinition")
public RouteBuilder exampleRouteDefinition(
@Qualifier(ExampleListenerBean) MessageListener<Exchange> listener) {
SqsQueueRouteProps properties =
SqsQueueRouteProps.main("queueDefinition", "path-to-queue").build();
String queue = properties.getFullQueueName();
return SqsQueueRouteBuilder.newBuilder(queue, amazonSQSClient, listener, getCamelContext())
.withRouteName("example-route-name")
.withProperties(properties)
.build();
}
这设置了所有没有 hystrix 依赖项的工作,我不确定在这里寻找什么不兼容性,错误消息具有误导性,因为队列存在我找不到的地方存在冲突。
解决方案
也提到版本,试试这个!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
推荐阅读
- node.js - 循环在nodejs puppeteer脚本中不起作用
- python - GroupBy 然后是 Mean/Median/Mode 使用 str.contains Criteria
- c++ - 如何摆脱 C++ 中的这些线程错误?
- python-3.x - 如何将整个数据框行添加为散点图注释
- sql - 如何为没有小数的数字添加小数位并将小数添加到只有一个小数列的数字
- azure - 为 azure cosmos 二头肌的 defaultTTL 设置空值
- java - Elasticsearch 异常 [type=illegal_argument_exception, reason=Provided password hash uses [NOOP] but the configured hashing algorithm is [BCRYPT]]
- javascript - HTML/JavaScript - 为文本框输入激活键盘麦克风
- javascript - 我有这个“ throw new RangeError('BITFIELD_INVALID', bit);” 错误; 我只是找不到解决方案
- mysql - 从终端中的文件执行 MYSQL 命令