AWS에 메시지를 보낼 SqsQueueSender가 있습니다. 나는이 수업을 시험하고 싶다. 내 생각에 그것은 필요한 클래스에 주입 된 @Component
이어야합니다. 중요한 점은 테스트 환경과 프로덕션 환경에서 다를 점인 SqsQueueSender
의 끝점을 구성하려고합니다.@Component 클래스를 적절하게 구성하는 방법
저는 @Autowired와 @Component를 여러 가지 다른 방법으로 이동 시켰지만 기본적인 오해가 있어야합니다. org.springframework.beans.factory.NoSuchBeanDefinitionException :
package com.foo.fulfillmentApi.dao;
import com.amazonaws.services.sqs.AmazonSQSAsyncClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.messaging.support.MessageBuilder;
@Component
public class SqsQueueSender {
private static final Logger LOGGER = LoggerFactory.getLogger(SqsQueueSender.class);
private final QueueMessagingTemplate queueMessagingTemplate;
@Autowired
AmazonSQSAsyncClient amazonSQSAsyncClient;
//This value is from /resources/application.properties
private @Value("${sqs.endpoint}") String endpoint;
public SqsQueueSender(AmazonSQSAsyncClient amazonSqsAsyncClient) {
amazonSqsAsyncClient.setEndpoint(endpoint);
this.queueMessagingTemplate = new QueueMessagingTemplate(amazonSqsAsyncClient);
}
public void send(String queueName, String message) {
this.queueMessagingTemplate.convertAndSend(queueName, MessageBuilder.withPayload(message).build());
}
}
오류 메시지에 의한 시동 상태
에 : 유형 'com.amazonaws 없음 자격 콩 여기 내 최신 구성입니다. services.sqs.AmazonSQSAsyncClient 'available : expected autowire 후보로 자격이되는 적어도 하나의 bean. 종속성 주석 : {}
은 당신이 AmazonSQSAsyncClient
를 통과해야 SqsQueueSender
을 구현합니다. 이 구성 요소가 해당 유형의 기존 Bean에 액세스 할 수 있는지 확인하려면 어떻게해야합니까?
aws에 대해 아무 것도 몰라요. 하지만 'AmazonSQSAsyncClient' 정의가 bean이되는 위치는 어디입니까? – Patrick
당신의 질문을 이해한다면, 그 클래스는 프로젝트에서'@ Bean'으로 정의되지 않습니다. 어떻게 가져온 기존 클래스에서 @Bean을 만들 수 있습니까? –