web-dev-qa-db-ja.com

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

他の誰かがこれに遭遇しますか?どんな助けも大歓迎です

21
polomarco

このエラーは、指定されたキューorderQueueがリージョンs-west-2に存在しないことを意味します。作成するだけで機能します。

ところで、@ EnableAutoConfigurationを使用する場合、@ EnableSqsを追加する必要はありません。

17
Alain

アランの答えは正しいです。このエラーは、キューがus-west-2リージョンに存在しないことを示しています。理由の1つは、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マネジメントコンソールを使用する場合は、コードとコンソールの両方で同じリージョンを指定するようにしてください。

AmazonSQSClientobjectのsetRegion()またはsetEndpoint()メソッドを使用して、クライアントで明確に領域またはエンドポイントを設定できます。 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 を参照してください

5
factotum

名前の代わりに、キューのURLを使用してみてください。

5
Selva

コマンドラインを使用してget-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

そして、プロンプト「デフォルトの地域名[...]:」の下で、私のキューが属する地域よりも地域を入力しました。その後、エラーが消えました。

だからあなたの設定を再確認してください;)

1
user1520978