2017-11-22 5 views
0

다른 AWS EC2 인스턴스의 AWS EC2 인스턴스 및 Java Spring Boot 기반 애플리케이션에 반응 기반 애플리케이션이 있습니다. React 애플리케이션에서 AWS의 SQS를 사용하여 POST 요청을 보내야한다. 일단 메시지가 보내지면 API 엔드 포인트를 호스팅하는 Java Spring 애플리케이션에서 메시지를 검색해야한다. 보내고받는 작업을 수행하는 방법에 대한 지침은 감사하겠습니다.React & Java Spring에서 AWS 메시지 대기열 (SMS)을 설정하는 방법

답변

0

다음 코드를 사용하여 sqs에서 개체를 가져옵니다. SQS에서

MessagingConfiguration.java

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.jms.core.JmsTemplate; 
import org.springframework.jms.listener.DefaultMessageListenerContainer; 

import com.amazon.sqs.javamessaging.SQSConnectionFactory; 
import com.amazonaws.auth.AWSCredentials; 
import com.amazonaws.auth.AWSCredentialsProvider; 
import com.amazonaws.auth.BasicAWSCredentials; 
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; 
import com.es.spring.messaging.MessageReceiver; 

@Configuration 
public class MessagingConfiguration { 

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

     @Value("${queue.name}") 
     private String queueName; 

     @Autowired 
     private MessageReceiver messageReceiver; 

     @Bean 
     public DefaultMessageListenerContainer jmsListenerContainer() { 

      SQSConnectionFactory sqsConnectionFactory = SQSConnectionFactory.builder() 
        .withAWSCredentialsProvider(new DefaultAWSCredentialsProviderChain()) 
        .withEndpoint(endpoint) 
        .withAWSCredentialsProvider(awsCredentialsProvider) 
        .withNumberOfMessagesToPrefetch(10).build(); 

      DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer(); 
      dmlc.setConnectionFactory(sqsConnectionFactory); 
      dmlc.setDestinationName(queueName); 

      dmlc.setMessageListener(messageReceiver); 

      return dmlc; 
     } 

     @Bean 
     public JmsTemplate createJMSTemplate() { 

      SQSConnectionFactory sqsConnectionFactory = SQSConnectionFactory.builder() 
        .withAWSCredentialsProvider(awsCredentialsProvider) 
        .withEndpoint(endpoint) 
        .withNumberOfMessagesToPrefetch(10).build(); 

      JmsTemplate jmsTemplate = new JmsTemplate(sqsConnectionFactory); 
      jmsTemplate.setDefaultDestinationName(queueName); 
      jmsTemplate.setDeliveryPersistent(false); 


      return jmsTemplate; 
     } 

     private final AWSCredentialsProvider awsCredentialsProvider = new AWSCredentialsProvider() { 
      @Override 
      public AWSCredentials getCredentials() { 
       return new BasicAWSCredentials("accessKey", "Secretkey"); 
      } 

      @Override 
      public void refresh() { 

      } 
    }; 

} 

MessageReceiver.java

import java.io.PrintWriter; 
import java.io.StringWriter; 

import javax.jms.Message; 
import javax.jms.MessageListener; 
import javax.jms.TextMessage; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 


import com.fasterxml.jackson.databind.ObjectMapper; 

@Component 
public class MessageReceiver implements MessageListener{ 

    Logger LOG = LoggerFactory.getLogger(MessageReceiver.class); 

    @Override 
    public void onMessage(Message message) { 
     try { 
      TextMessage textMessage = (TextMessage) message; 
      System.out.println("message:"+textMessage.getText()); 
      CustomClass activeMq =new ObjectMapper().readValue(textMessage.getText(),CustomClass.class); 
      LOG.info("Application : Active Mq : {}",activeMq); 

     } catch (Exception e) {  
      e.printStackTrace();    
     } 

    } 
} 

메시지 보내기.

AmazonSQS awsSqs = new AwsSqsClient().getAWSSqsclient();   
     awsSqs.sendMessage(new SendMessageRequest().withDelaySeconds(60) 
       .withQueueUrl("https://sqs-url/TestQueue").withMessageBody(input)); 

위의 답변을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. Java로 메시지를받는 예제에 대해 감사드립니다. 나는 React (JavaScript)를 통해 메시지를 보낼 것이므로 어떻게 보내야하는지에 대한 예가 있습니까? – IMOsiris

+0

링크를 클릭하십시오. http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/sqs-examples-send-receive-messages.html – Vaibs