以下是aws sqs的弹簧配置。
<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.工人和2.网络服务器。
根据文档,认为工人类型的环境符合法案。 AWS在ec2实例中部署守护程序,并从SQS中提取消息并将其封装到http post请求的消息正文中。此帖子请求可用于发布到Web服务器。
然而,我写的组件就是这样做的。从队列中拉出消息,并进行一些后台处理。
在这种情况下,我应该选择哪种环境类型?
答案 0 :(得分:0)
如果必须使用工作层,则不需要使用组件,并确保应用程序的后台处理部分具有HTTP Post接口。您可以将轮询留给beanstalk提供的守护进程。如果你想使用elasticbeanstalk,我会推荐这个。
如果您想使用您的组件,那么您也可以只使用Web层,但如果您只是在进行后台处理而不是为Web流量提供服务,那么您将有端口监听Web流量,ELB无缘无故。