spring消息队列

下一篇文章将演示如何将Spring JMS模板和DLMC与AmazonSQS API一起使用,以放置消息队列。

我为什么要使用Amazon SQS?

  1. 易于配置
  2. 跨平台支持
  3. 从您的自我冗余,连带和扩展方面的烦恼中赚钱。

为什么我不使用Amazon SQS?

  1. 如果延迟要求少于〜20 MS
  2. 每封邮件的费用约为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>
参考: AmazonSQS和Spring在IdanFridman.com博客上提供了来自JCG合作伙伴 Idan Fridman的消息队列 。

翻译自: https://www.javacodegeeks.com/2014/01/amazonsqs-and-spring-for-messaging-queue.html

spring消息队列

spring消息队列_AmazonSQS和Spring用于消息传递队列相关推荐

  1. AmazonSQS和Spring用于消息传递队列

    下一篇文章将演示如何将Spring JMS模板和DLMC与AmazonSQS API一起使用,以放置消息队列. 我为什么要使用Amazon SQS? 易于配置 跨平台支持 从您的自我冗余,连带和扩展方 ...

  2. 算法练习day8——190326(队列实现栈、栈实现队列)

    1.仅用队列结构实现栈结构 1.1 分析: 1.所有数先入data队列: 2.将前n-1个数入help队列,弹出最后一个数: 3.将help中的前n-2个数入data队列,弹出最后一个数: 4.重复2 ...

  3. 消息队列-----生成者 Spring整合rabbitmq

    最近做Spring结合Rabbitmq,然后往队列里面发送了一个消息,如何查看消息 打开:http://127.0.0.1:15672 输入用户名和密码:找到你的队列 我们可以找到自己的队列,并且发现 ...

  4. RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)

    应用场景 目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货.在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持 ...

  5. Spring源码深度解析(郝佳)-学习-Spring消息-整合RabbitMQ及源码解析

      我们经常在Spring项目中或者Spring Boot项目中使用RabbitMQ,一般使用的时候,己经由前人将配置配置好了,我们只需要写一个注解或者调用一个消息发送或者接收消息的监听器即可,但是底 ...

  6. Spring 消息模式

    Spring 消息模式 消息服务概述 为什么使用消息服务 异步处理 应用解耦 流量削峰 分布式事务管理 常用消息中间件介绍 RabbitMQ消息中间件 RabbitMQ工作模式介绍 Work queu ...

  7. Spring Integration 4.3.10 发布,Spring 消息通信

    Spring Integration 4.3.10 发布了.Spring Integration 能在基于 Spring 的应用中进行简单的消息通信,并通过简单的适配器与外部系统集成.这些适配器提供了 ...

  8. Spring Boot(十四)RabbitMQ延迟队列

    一.前言 延迟队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单:2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度:3.过1分钟给新注册会员的用户,发送注册邮件等. 实现延迟队列的 ...

  9. Spring Cloud入门系列(1)- Spring生态体系发展史+全系框架介绍

    Spring发展史 2000年,Java EE和EJB迅速发展,很多知名公司都是采用此技术方案进行项目开发,但是EJB 属于重量级框架,开发繁琐.于是一个叫Rod Johnson的大佬写了一本叫做&l ...

最新文章

  1. GNN 系列(三):GraphSAGE
  2. Route 66地图安装的一个简单方法,在N70上验证过
  3. 收不到Win10正式版预订通知?一个批处理搞定
  4. web前端教程:如何理解JavaScript的单线程?
  5. 事件监听机制——鼠标事件MouseEvent
  6. C语言预处理命令分类和工作原理
  7. 关于java中getClass()和getSuperClass()的讲解
  8. margin相关技巧
  9. 牛客16596 计算系数(排列组合)
  10. denyhosts、中文文档乱码、端口占用查询
  11. HDU 5950 Recursive sequence(矩阵快速幂)
  12. 龙邱STM32单片机用J-LINK下载无法被识别的解决方法
  13. JavaScript中prompt的使用
  14. vant制作首页的加载中和暂无数据
  15. URL编码的原因及场景
  16. pointcloud90度分割+球面投影(pcl+ros+python)
  17. python考勤统计_公司HR统计考勤用这个函数公式,快速、准确完成,再也不加班了...
  18. 论文投稿指南——中国(中文EI)期刊推荐(第5期)
  19. 【win32】Helloworld
  20. html5获取我的位置并在百度地图上显示

热门文章

  1. Codeforces Round #669 (Div. 2)
  2. HDU5528 - Count a * b
  3. MySQL str_to_date()函数
  4. ThreadLocal的非数据安全用法
  5. 漫画:什么是中间人攻击
  6. 购物车的功能——JS源码
  7. String转Double
  8. 近似装箱问题(两种脱机算法实现)
  9. junit 测试执行顺序_JUnit 5中的测试执行顺序
  10. 技术停滞_检测和测试停滞的流– RxJava常见问题解答