spring
下一篇文章将演示如何将Spring JMS模板和DLMC与AmazonSQS API一起使用,以放置消息队列。
我为什么要使用Amazon SQS?
- 易于配置
- 跨平台支持
- 从您的自我冗余,连带和扩展担忧中赚钱。
为什么我不使用Amazon SQS?
- 如果延迟要求少于〜20 MS
- 每封邮件的费用约为0.00005 $
我遇到了一个很好的开源项目:Nevado,它以非常简洁的方式包装了Amazon SQS API。
将此添加到您的Maven依赖项:
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>nevado-jms</artifactId>
<version>1.2.4</version>
</dependency>
现在,让我们配置Spring bean使其与AmazonSQS很好地集成:
1.连接工厂:
<bean id="sqsConnectorFactory" class="org.skyscreamer.nevado.jms.connector.amazonaws.AmazonAwsSQSConnectorFactory"/>
请注意,在此包装器中,我们需要设置aws.accessKey和aws.secretKey。 我们从AmazonSQS帐户门户获取这些密钥:
<bean id="connectionFactory" class="org.skyscreamer.nevado.jms.NevadoConnectionFactory">
<property name="sqsConnectorFactory" ref="sqsConnectorFactory"/>
<property name="awsAccessKey" value="${aws.accessKey}"/>
<property name="awsSecretKey" value="${aws.secretKey}"/>
</bean>
2.创建队列
<bean id="myQueue" class="org.skyscreamer.nevado.jms.destination.NevadoQueue">
<constructor-arg value="${aws.sqs.queue.name}"/>
</bean>
3.创建Jms模板(稍后将在代码中注入它以发送消息):
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="defaultDestinationName" value="${aws.sqs.queue.name}"/>
<property name="connectionFactory" ref="cachedConnectionFactory"/>
</bean>
4.添加监听器:
- 4.a我正在使用SimpleMessageListenerContainer,它具有缓存连接,运行并发使用者,设置错误侦听器等功能。
<bean id="simpleMessageListenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="messageListener" ref="listener"/> <property name="destination" ref="myQueue"/> <property name="errorHandler" ref="amazonMessageListener"/> <property name="concurrency" value="20"/> <property name="taskExecutor" ref="listenerThreadPoolTaskExecutor"/> </bean>
- 4.b让我们为侦听器的执行者添加线程池:
<bean id="listenerThreadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="70"/> <property name="maxPoolSize" value="70"/> <property name="daemon" value="true"/> <property name="keepAliveSeconds" value="60"/> </bean>
- 4.c添加缓存连接支持:
<bean id="cachedConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="connectionFactory"/> <property name="sessionCacheSize" value="10"/> </bean>
- 4.d创建MessageAdapter来挂接所有内容,并将pojo设置为我们的消息监听器(amazonMessageListener):
<bean id="listener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"> <property name="delegate" ref="amazonMessageListener"/> <property name="defaultListenerMethod" value="onMessage"/> <property name="defaultResponseDestination" ref="myQueue"/> </bean>
翻译自: https://www.javacodegeeks.com/2014/01/amazonsqs-and-spring-for-messaging-queue.html
spring
所有评论(0)