2017-11-22 22 views
0

私は、React-basedアプリケーションをAWS EC2インスタンスに、Java Spring Bootベースのアプリケーションを別のAWS EC2インスタンスに持っています。 ReactアプリケーションからAWSのSQSを使用してPOSTリクエストを送信する必要があります。メッセージが送信されたら、APIエンドポイントをホストするJava Springアプリケーションでメッセージを取得する必要があります。送受信操作をどのように達成するかについてのガイダンスは高く評価されます。React&Java SpringでAWSメッセージキューイング(SMS)を設定する方法

答えて

0

以下のコードを使用して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();    
     } 

    } 
} 

SQSにメッセージを送信します。

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

関連する問題