AmazonSQS和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
AmazonSQS和Spring用于消息传递队列相关推荐
- spring消息队列_AmazonSQS和Spring用于消息传递队列
spring消息队列 下一篇文章将演示如何将Spring JMS模板和DLMC与AmazonSQS API一起使用,以放置消息队列. 我为什么要使用Amazon SQS? 易于配置 跨平台支持 从您的 ...
- Spring Boot 消息队列 RocketMQ 入门
转载自 芋道 Spring Boot 消息队列 RocketMQ 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/RocketMQ/ 「芋道源码」欢迎转载 ...
- 芋道 Spring Boot 消息队列 RocketMQ 入门
点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...
- Spring Cloud —— 消息队列与 RocketMQ
导航 一.什么是 MQ 二.常见的 MQ 产品 三.RocketMQ 概念与架构设计 3.1 基本概念 1.消息模型(Message Model) 2.生产者与消费者(Producer & C ...
- c#进阶(4)—— Redis 用于消息队列的存储
1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b: http://www.cn ...
- 一个用于消息队列的并发式php进程管理程序-守护
守护类 是主功能类 监听消息,分发消息 启动进程 看核心代码 1 while(1) { 2 $message = $this->_listening(); 3 $this->_dispat ...
- 使用Java 8 Lambda表达式将实体映射到DTO
当我们需要将DTO转换为实体(Hibernate实体等)并向后转换时,我们都会面临混乱的开销代码. 在我的示例中,我将用Java 8演示代码如何变得越来越短. 让我们创建目标DTO: public c ...
- 如何使用消息队列,Spring Boot和Kubernetes扩展微服务
by Daniele Polencic 由Daniele Polencic 如何使用消息队列,Spring Boot和Kubernetes扩展微服务 (How to scale Microservic ...
- Spring整合ActiveMQ完成消息队列MQ编程
<–start–> 第一步:新建一个maven,将工程命名为activeMQ_spring.在pom.xml文件中导入相关jar包. ①spring开发和测试相关的jar包: spring ...
最新文章
- 在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库
- Linux-鸟菜-2-主机规划与磁盘分区
- Neo4j 导入动态类型关系
- 《HTML5与CSS3实战指南》——2.2 基本的HTML5模板
- Mecanim动画系统
- 【今日CS 视觉论文速览】Part2, 16 Jan 2019
- 暖心!湖北伢雷军为家乡再捐1270万 大批紧缺医护物资连夜运抵武汉
- 为什么程序要从0开始计数
- 嵌套的SQL另外一种写法
- 【麦子学院 彭亮 机器学习】3.2决策树应用(准备篇)
- DirectX9常用软件运行库
- 若干tif文件转换成pdf
- K近邻算法(k-Nearest Neighbour, KNN)
- windows cmd 快速编辑模式
- HTC Vive榜单:盘点一周最受欢迎的VR应用
- 微信公众号:服务号、企业订阅号、个人订阅号的差异对比
- 《Effective Java》读书笔记五(枚举和注解)
- C语言简介及进制换算
- 内存 profile (zz)
- 老男孩Python自动化开发12期完整版(含作业代码课件)
热门文章
- centos8启动zk集群失败:zk Error contacting service. It is probably not running.
- java泛型程序设计——注意擦除后的冲突
- leetcode初级算法4.只出现一次的数字
- neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点
- hibernate jpa_使用Hibernate(JPA)一键式删除
- pcl_openmap_OpenMap教程–第1部分
- java8 streams_当Java 8 Streams API不够用时
- 用Spring组成自定义注释
- hibernate 调试_Hibernate调试–查找查询的来源
- Kogito人机规则-第1部分:进一步解决流口水