如何解决AWS SQS 发送消息 java.lang.NoSuchFieldError: CLIENT_ENDPOINT
java.lang.NoSuchFieldError: CLIENT_ENDPOINT
at com.amazonaws.services.sqs.AmazonSQSClient.executeSendMessage(AmazonSQSClient.java:1813)
at com.amazonaws.services.sqs.AmazonSQSClient.sendMessage(AmazonSQSClient.java:1795)
at com.tvg.atp.orch.utils.soapUtil.sendErrorString(SoapUtil.java:700)
at com.tvg.atp.orch.handler.OrchFunction.apply(OrchFunction.java:73)
at com.tvg.atp.orch.controller.OrchController.processEvent(OrchController.java:55)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190)
at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040)
at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcmetricsFilter.doFilterInternal(WebMvcmetricsFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
我对 gradle 比较陌生。我正在向 AWS SQS 死信队列发送消息。我不断收到上述错误。同一个类首先尝试根据过滤器将消息传递到另一个队列,如果不成功,则将消息发送到 dlq。我已经测试了快乐路径并且它有效。生成了错误字符串,但无法将消息发送到 dlq。我读过这通常是与 sdk 的冲突,但我无法解决它。这是我的 build.gradle 文件:
buildscript {
ext {
SPRING_BOOT = '2.2.12.RELEASE'
SPRING_CLOUD_AWS = '2.2.4.RELEASE'
SPRING_CLOUD = 'Hoxton.SR8'
AWS_SDK = "1.11.611"
SPRING_BOOT_GRADLE_PLUGIN='2.4.0'
}
repositories {
maven {
url = uri('https://repo.maven.apache.org/maven2/')
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${SPRING_BOOT}"
classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:2.0.0"
classpath "org.owasp:dependency-check-gradle:6.1.0"
classpath 'com.github.ben-manes:gradle-versions-plugin:0.27.0'
}
}
plugins {
id 'net.ltgt.apt' version '0.21'
id 'net.ltgt.apt-idea' version '0.21'
id "com.gorylenko.gradle-git-properties" version "2.0.0"
}
configurations {
antJUnit
}
dependencies {
antJUnit 'org.apache.ant:ant-junit:1.10.8'
}
apply plugin: 'io.spring.dependency-management'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'groovy'
group = "com.group.${rootProject.name}"
archivesBaseName = "${rootProject.name}"
sourceCompatibility = 1.8
//mainClassName = 'com.group.notifications.handler.ScheduledEventHandlerImplementation'
dependencyManagement {
dependencies {
dependency "org.springframework.boot:spring-boot-starter:${SPRING_BOOT}"
dependency "org.springframework.boot:spring-boot-starter-web:${SPRING_BOOT}"
//dependency "org.springframework.boot:spring-boot-starter-activemq:${SPRING_BOOT}"
dependency 'xalan:xalan:2.7.1'
dependency 'commons-lang:commons-lang:2.3'
dependency 'net.logstash.logback:logstash-logback-encoder:6.1'
dependency 'org.apache.commons:commons-lang3:3.11'
dependency 'javax.xml.bind:jaxb-api:2.3.1'
dependency 'xerces:xercesImpl:2.8.1'
dependency 'org.mvel:mvel2:2.4.11.Final'
}
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${SPRING_CLOUD}"
mavenBom "org.springframework.cloud:spring-cloud-aws-dependencies:${SPRING_CLOUD_AWS}"
}
testCompile {
dependencies {
//dependency "org.spockframework:spock-core:1.3-groovy-2.5"
}
}
}
allprojects {
apply plugin: 'java'
apply plugin: 'jacoco'
repositories {
maven {
url = uri('https://repo.maven.apache.org/maven2/')
}
}
}
//apply from: 'gradle/code-quality.gradle'
apply from: 'gradle/dependency-check.gradle'
//apply from: 'gradle/utils.gradle'
apply from: 'gradle/dependency-updates.gradle'
apply plugin: 'application'
apply plugin: 'org.springframework.boot'
dependencies {
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-web"
//compile 'org.springframework.boot:spring-boot-starter-activemq:2.4.1'
compile 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config'
compile "org.springframework.cloud:spring-cloud-function-adapter-aws"
compile 'com.amazonaws:amazon-sqs-java-messaging-lib'//:1.0.4' Todo Commented out
//compile group: 'com.amazonaws',name: 'aws-java-sdk-dynamodb',version: '1.11.792' Todo Commented out
implementation group: 'com.amazonaws',name: 'aws-lambda-java-events',version: '3.6.0'//'2.2.2'
//implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' Todo Commented out
//testImplementation 'junit:junit:4.13.1' Todo Commented out
//implementation group: 'com.amazonaws',name: 'aws-java-sdk-sqs',version: '1.11.993' Todo Commented out
//implementation 'org.slf4j:slf4j-api:1.7.30' Todo Commented out
// https://mvnrepository.com/artifact/org.w3c/dom
implementation group: 'org.w3c',name: 'dom',version: '2.3.0'//-jaxb-1.0.6
// https://mvnrepository.com/artifact/org.json/json
implementation group: 'org.json',name: 'json',version: '20090211'
// https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sqs
//implementation group: 'com.amazonaws',version: '1.11.988'
//implementation group: 'org.springframework.ws',name: 'spring-ws-core',version: '3.0.10.RELEASE' Todo Commented out
// https://mvnrepository.com/artifact/com.sun.xml.messaging.saaj/saaj-impl
implementation group: 'com.sun.xml.messaging.saaj',name: 'saaj-impl',version: '1.3'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test
//testImplementation group: 'org.springframework.boot',name: 'spring-boot-starter-test' Todo Commented out
runtimeOnly 'org.jlib:jlib-awslambda-logback:1.0.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'//Added to run tests in IDE
compile "com.fasterxml.jackson.core:jackson-databind"
compile 'xalan:xalan'
compile 'commons-lang:commons-lang'
compile 'net.logstash.logback:logstash-logback-encoder'
compile group: 'org.slf4j',name: 'slf4j-api',version: '1.7.30'
//compile 'org.apache.commons:commons-lang3:3.11' Todo Commented out
compile 'javax.xml.bind:jaxb-api:2.3.1'
compile 'xerces:xercesImpl:2.8.1'
compile 'org.mvel:mvel2:2.4.11.Final'
//compile 'javax.xml.bind:jaxb-api:2.3.0' Todo Commented out
compile 'javax.activation:activation:1.1'
//compile 'org.glassfish.jaxb:jaxb-runtime:2.3.0' Todo Commented out
//compile "org.springframework.boot:spring-boot-starter-actuator" Todo Commented out
//compile "org.springframework.boot:spring-boot-starter-web" Todo Commented out
testImplementation(platform("org.junit:junit-bom:5.7.0"))
testImplementation('org.junit.jupiter:junit-jupiter-api')
testCompile('org.junit.jupiter:junit-jupiter-params')
testRuntime('org.junit.jupiter:junit-jupiter-engine')
testCompile group: 'org.mockito',name: 'mockito-inline',version: '3.2.0'
test.useJUnitPlatform() // fix "test events not received" bug in IDEA
testCompile 'com.willowtreeapps.assertk:assertk-jvm:0.23'
}
jar {
manifest {
attributes "Main-Class": "com.cam.cam.orch.handler.CamOrchFunction"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
from('src/main/resources') {
include '*'
}
}
task buildZip(type: Zip) {
from compileJava
from processResources
into('lib') {
from configurations.runtimeClasspath
}
doLast{
filetree tree = filetree('build/distributions')
tree.each {
println it.name
}
}
}
test {
useJUnitPlatform {
includeEngines 'junit-jupiter','junit-vintage'
}
reports.html.enabled = false
reports.junitXml.enabled = true
}
task testReport {
ant.taskdef(name: 'junitreport',classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator',classpath: configurations.antJUnit.asPath)
dependsOn subprojects*.test
doFirst {
mkdir "$buildDir/test-results"
ant.junitreport(todir: "$buildDir/test-results") {
subprojects.each {
if (it.testResultsDir.exists()) {
fileset(dir: it.testResultsDir)
}
}
}
}
}
任何帮助都会很棒。
解决方法
我建议放弃旧的 V1 API,并将其替换为适用于 Java V2 的 AWS 开发工具包。亚马逊建议使用 v2:
适用于 Java 2.x 的 AWS 开发工具包是对 1.x 版代码库的主要重写。它构建在 Java 8+ 之上,并添加了几个经常请求的功能。其中包括对非阻塞 I/O 的支持以及在运行时插入不同 HTTP 实现的能力。
适用于 Java V2 的 AWS 开发工具包与 Spring 框架配合良好。有一个教程展示了 SQS 服务和 Spring 框架的使用。但是 - 它使用 POM 文件而不是 Gradle。但是,它可能对您有所帮助。
Creating an example messaging application using the AWS SDK for Java
V1 没有像这样的端到端教程。
,对于任何有同样问题的人,我运行了 gradle 依赖项命令,发现 2 个 sdk 引用与其他引用不同。使它们都相同解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。