簡體   English   中英

在 java 中從本地向 SQS 隊列發送消息失敗

[英]Sending message to a SQS queue fails from local in java

我無法從我的 java 應用程序向sqs-queue發送消息。 我在我的本地為 SQS 運行roribio16/alpine-sqs docker 圖像,我已經創建了一個標准隊列。

代碼片段:

@Data
@Configuration
@EnableSqs
public class SQSConfig {

    private final String amazonAWSAccessKey;
    private final String amazonAWSSecretKey;
    private final String amazonSQSRegion;

    public SQSConfig(@Value("${aws.accesskey}") String amazonAWSAccessKey,
                     @Value("${aws.secretkey}") String amazonAWSSecretKey,
                     @Value("${sqs.aws.region}") String amazonSQSRegion) {
        this.amazonAWSAccessKey = amazonAWSAccessKey;
        this.amazonAWSSecretKey = amazonAWSSecretKey;
        this.amazonSQSRegion = amazonSQSRegion;
    }

    @Bean
    public QueueMessagingTemplate queueMessagingTemplate() {
        return new QueueMessagingTemplate(amazonSQSClient());
    }

    @Bean
    @Primary
    public AmazonSQSAsync amazonSQSClient() {
        return AmazonSQSAsyncClientBuilder.standard()
                .withRegion(amazonSQSRegion)
                .withCredentials(new AWSStaticCredentialsProvider(new DefaultAWSCredentialsProviderChain().getCredentials()))
                .build();
    }

    private AWSStaticCredentialsProvider amazonAWSCredentials() {
        return new AWSStaticCredentialsProvider(new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey));
    }

}

消息生產者服務:

@Component
public class SQSMessageProducerService {

    @Value("${sqs.endpoint}")
    private String amazonSQSEndpoint;

    @Autowired
    private QueueMessagingTemplate queueMessagingTemplate;

    public void sendMessage(String messageBody) {
        Message messageBuilt = MessageBuilder.withPayload(messageBody).build();
        try {
            queueMessagingTemplate.send(amazonSQSEndpoint, messageBuilt);
        } catch (MessagingException e) {
            System.out.println(e);
        }
        System.out.println("message sent: " + messageBody);

    }
}

調用使用 -

sqsMessageProducerService.sendMessage(userEvent.toString());

錯誤堆棧 -

無效動作; 請參閱 SQS 文檔。 (服務:AmazonSQS;狀態代碼:400;錯誤代碼:InvalidAction;請求 ID:00000000-0000-0000-0000-000000000000)

來自屬性文件的 Vars -

sqs.endpoint=${SQS_ENDPOINT:http://localhost:9324/test-sns-queue}
sqs.aws.region=${SQS_AWS_REGION:us-west-2}

此外,SQS 實例在我的本地啟動,可以使用 http://localhost:9325/ 訪問。 我在這里缺少一些配置嗎?

我認為問題可能是端點是http://localhost:9324/queue/test-sns-queue

終點錯誤請嘗試/queue/test-sns-queue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM