1

Herespring-integration-aws 프로젝트입니다.누군가가 스프링 통합 aws SQS 사용 예를 제공 할 수 있습니까?

@SpringBootApplication 
public static class MyConfiguration { 

    @Autowired 
    private AmazonSQSAsync amazonSqs; 

    @Bean 
    public PollableChannel inputChannel() { 
     return new QueueChannel(); 
    } 

    @Bean 
    public MessageProducer sqsMessageDrivenChannelAdapter() { 
     SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, "myQueue"); 
     adapter.setOutputChannel(inputChannel()); 
     return adapter; 
    } 
} 

좋아, ChannelSqsMessageDrivenChannelAdapter 정의되지만, 다음에 무엇 : 그들은 인바운드 Channle 어댑터에 대한 예를 제공?

import com.amazonaws.services.sqs.model.Message; 

@Component 
public class MyComponent { 
    public void onMessage(Message message) throws Exception { 
     //handle sqs message 
    } 
} 
  1. 방법 tell 봄이 구성 요소에 myQueue에서 모든 메시지를 전달하는 : 나는 그런 봄에 콩을 가지고 있다고하자?
  2. 메시지를 처리 ​​할 추가 구성이 있습니까? 예를 들어, 메시지 SQS을 수신 한 후 해당 메시지를 으로 처리하고 다른 클라이언트가 볼 수 없으므로 은 하나의 메시지 만 가져오고 다음은 처리하지 않습니다. 이 동작이 기본적으로 활성화되어 있습니까?

답변

0

Spring Integration Reference Manual을 읽어야합니다.

@Component 
public class MyComponent { 

    @ServiceActivator(inputChannel = "inputChannel") 
    public void onMessage(Message message) throws Exception { 
     //handle sqs message 
    } 

} 
1

두 번째 질문에 응답 : 기본적으로

/** 
* Configure the maximum number of messages that should be retrieved during one poll to the Amazon SQS system. This 
* number must be a positive, non-zero number that has a maximum number of 10. Values higher then 10 are currently 
* not supported by the queueing system. 
* 
* @param maxNumberOfMessages 
*  the maximum number of messages (between 1-10) 
*/ 
public void setMaxNumberOfMessages(Integer maxNumberOfMessages) { 
    this.maxNumberOfMessages = maxNumberOfMessages; 
} 

그것은 10입니다.

에 대한 mark them as processingSqsMessageDeletionPolicy 옵션을 얻을 수 있습니다 질문 :

/** 
* Never deletes message automatically. The receiving listener method must acknowledge each message manually by using 
* the acknowledgment parameter. 
* <p><b>IMPORTANT</b>: When using this policy the listener method must take care of the deletion of the messages. 
* If not, it will lead to an endless loop of messages (poison messages).</p> 
* 
* @see Acknowledgment 
*/ 
NEVER, 

이러한 Acknowledgment 개체가 당신이 필요로 할 때마다 당신이 당신의 onMessage() 방법에서 얻을 그것을 인식 할 수있는 AwsHeaders.ACKNOWLEDGMENT 메시지 헤더에 배치됩니다.