2015-09-07 90 views
0

以下是我對aws sqs的彈簧配置。設置AWS SQS和ElasticBeanStalk環境

<bean id="CredentialsProviderBean" 
    class="com.myapp.util.ClasspathPropertiesFileCredentialsProvider" /> 

<bean id="ConnectionFactoryBuilder" 
    class="com.amazon.sqs.javamessaging.SQSConnectionFactory$Builder"> 
    <property name="regionName" value="us-east-1" /> 
    <property name="numberOfMessagesToPrefetch" value="1" /> 
    <property name="awsCredentialsProvider" ref="CredentialsProviderBean" /> 
</bean> 

<bean id="ConnectionFactory" class="com.amazon.sqs.javamessaging.SQSConnectionFactory" 
    factory-bean="ConnectionFactoryBuilder" factory-method="build" /> 

<bean id="Connection" class="javax.jms.Connection" factory-bean="ConnectionFactory" 
    factory-method="createConnection" init-method="start" destroy-method="close" /> 

<bean id="QueueName" class="java.lang.String"> 
    <constructor-arg value="myqueue" /> 
</bean> 

<bean id="amazonMessageListener" class="com.myapp.daemon.AsyncMessageListener" /> 

<bean id="messageListener" 
    class="org.springframework.jms.listener.adapter.MessageListenerAdapter"> 
    <property name="delegate" ref="amazonMessageListener" /> 
    <property name="defaultListenerMethod" value="onMessage" /> 
    <property name="messageConverter"> 
     <null /> 
    </property> 
</bean> 

<bean id="jmsContainer" 
    class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
    <property name="connectionFactory" ref="ConnectionFactory" /> 
    <property name="destinationName" ref="QueueName" /> 
    <property name="messageListener" ref="messageListener" /> 
</bean> 

我無法理解如何在AWS中進行設置。

ElasticBeanStalk提供了兩種類型的環境, 1. worker和2. webserver。根據文檔,認爲工人類型的環境符合法案要求。 AWS在ec2實例中部署守護進程,並從SQS中取消消息並將其封裝到http post請求的消息主體中。此發佈請求可用於發佈到Web服務器。

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-environ

但是我寫的成分做到這一點。從隊列中取出消息,並進行一些後臺處理。

在這種情況下,我應該選擇哪種環境類型?

回答

0

如果您必須使用工作層,則不需要使用組件,並且確保應用程序的後臺處理部分具有HTTP Post界面。您可以將輪詢保留到beanstalk提供的守護進程。如果你想使用elasticbeanstalk,我會推薦這個。

如果你想使用你的組件,那麼你可能只是使用web層,儘管如果你只是做後臺處理和不提供Web流量,那麼你將有端口監聽Web流量,ELB沒有理由。