programing

Spring Cloud - SQS - 이 wsdl 버전에 대해 지정한 대기열이 없습니다.

copysource 2023. 8. 23. 23:56
반응형

Spring Cloud - SQS - 이 wsdl 버전에 대해 지정한 대기열이 없습니다.

나는 자동 구성을 사용하여 메시지로 스프링 클라우드를 작동시키려고 합니다.

내 속성 파일에는 다음이 포함됩니다.

cloud.aws.credentials.accessKey=xxxxxxxxxx
cloud.aws.credentials.secretKey=xxxxxxxxxx

cloud.aws.region.static=us-west-2

내 구성 클래스는 다음과 같습니다.

@EnableSqs
@ComponentScan
@EnableAutoConfiguration
public class Application {


public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
}

내 수신기 클래스:

@RestController
public class OrderListener {

    @MessageMapping("orderQueue")
    public void orderListener(Order order){

        System.out.println("Order Name " + order.getName());
        System.out.println("Order Url" + order.getUrl());

    }
}

하지만, 제가 이걸 실행할 때는.다음 오류가 발생합니다.

org.springframework.context.ApplicationContextException: Failed to start bean        'simpleMessageListenerContainer'; nested exception is     org.springframework.messaging.core.DestinationResolutionException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110); nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:770)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:961)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:950)
at com.releasebot.processor.Application.main(Application.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Caused by: org.springframework.messaging.core.DestinationResolutionException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110); nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110)
at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:81)
at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:37)
at org.springframework.messaging.core.CachingDestinationResolverProxy.resolveDestination(CachingDestinationResolverProxy.java:88)
at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:300)
at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.start(SimpleMessageListenerContainer.java:38)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
... 18 common frames omitted

다른 사람이 이걸 발견했나요?어떤 도움이라도 주시면 대단히 감사하겠습니다.

이 오류는 지정된 대기열 순서 큐가 us-west-2 영역에 없음을 의미합니다.그냥 만들면 됩니다.

그나저나, 추가할 필요가 없습니다._@EnableSqs_사용 시_@EnableAutoConfiguration_.

이름 대신 대기열의 URL을 사용해 보십시오.

알랭의 대답은 정확합니다.이 오류는 us-west-2 영역에 큐가 없음을 나타냅니다.AWS Java SDK에서 us-east-1을 기본 영역으로 사용하기 때문일 수 있습니다.AWS 설명서 http://docs.aws.amazon.com/java-sdk/latest/developer-guide/java-dg-region-selection.html 에서 확인할 수 있습니다.

코드에 영역을 지정하지 않으면 Java용 AWS SDK에서 us-east-1을 기본 영역으로 사용합니다.그러나 AWS 관리 콘솔은 us-west-2를 기본값으로 사용합니다.따라서 개발과 함께 AWS Management Console을 사용할 때는 코드와 콘솔 모두에서 동일한 영역을 지정해야 합니다.

다음을 사용하여 클라이언트에서 구체적으로 영역 또는 끝점을 설정할 수 있습니다.setRegion()또는setEndpoint()의 방법.AmazonSQSClientobject. http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQS.html#setEndpoint-java.lang.String- 를 참조하십시오.

지역 및 엔드포인트 목록은 http://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region 을 참조하십시오.

올바른 AWS 프로파일을 사용하고 있는지 확인합니다.이것이 제 경우의 문제였습니다.프로필이 여러 개인 경우 다음을 모두 얻을 수 있습니다.

cat ~/.aws/credentials

그런 다음 다른 프로필을 설정할 수 있습니다.

export AWS_PROFILE=<profile_name>

이 값을 지정하지 않으면 기본적으로 현재 프로파일은default그러니 그걸 고려해야 합니다.

명령줄을 사용하여 queue-url을 가져오려고 시도하는 동안 동일한 문제에 영향을 주었습니다.내가 가진 것 좀 봐요

 A client error (AWS.SimpleQueueService.NonExistentQueue) occurred when calling the GetQueueUrl operation: The specified queue does not exist for this wsdl version.

실행해야 하는 항목:

$aws configure

그리고 'Default region name[...]:' 프롬프트에서 내 큐가 속한 영역보다 더 많은 영역이 입력되었습니다.그런 다음 오류가 사라졌습니다.

구성을 다시 확인하십시오 ;)

같은 이름의 큐를 다시 만든 후에도 이 오류가 발생했습니다. 새 ARN이 연결될 때까지 얼마나 걸릴지 몰랐기 때문에 새 큐를 만드는 것이 즉시 해결책이었습니다.

이 "" " " " " " " 를 하십시오.aws configure지역을 us-east-1로 설정합니다.

제 경우에는 대기열 이름이 존재했지만 영역이 us-east-2로 설정되었기 때문에 여전히 해당 오류를 토하고 있었습니다.왜 그런지는 모르겠지만 지역을 us-east-1로 바꾸고 기본 지역으로 고쳐준 것 같습니다.

언급URL : https://stackoverflow.com/questions/28081182/spring-cloud-sqs-the-specified-queue-does-not-exist-for-this-wsdl-version

반응형