下一篇文章将演示如何将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

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

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

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

  2. Spring Boot 消息队列 RocketMQ 入门

    转载自  芋道 Spring Boot 消息队列 RocketMQ 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/RocketMQ/ 「芋道源码」欢迎转载 ...

  3. 芋道 Spring Boot 消息队列 RocketMQ 入门

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

  4. Spring Cloud —— 消息队列与 RocketMQ

    导航 一.什么是 MQ 二.常见的 MQ 产品 三.RocketMQ 概念与架构设计 3.1 基本概念 1.消息模型(Message Model) 2.生产者与消费者(Producer & C ...

  5. c#进阶(4)—— Redis 用于消息队列的存储

    1.参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html -- 主要的实现思路 b:  http://www.cn ...

  6. 一个用于消息队列的并发式php进程管理程序-守护

    守护类 是主功能类 监听消息,分发消息 启动进程 看核心代码 1 while(1) { 2 $message = $this->_listening(); 3 $this->_dispat ...

  7. 使用Java 8 Lambda表达式将实体映射到DTO

    当我们需要将DTO转换为实体(Hibernate实体等)并向后转换时,我们都会面临混乱的开销代码. 在我的示例中,我将用Java 8演示代码如何变得越来越短. 让我们创建目标DTO: public c ...

  8. 如何使用消息队列,Spring Boot和Kubernetes扩展微服务

    by Daniele Polencic 由Daniele Polencic 如何使用消息队列,Spring Boot和Kubernetes扩展微服务 (How to scale Microservic ...

  9. Spring整合ActiveMQ完成消息队列MQ编程

    <–start–> 第一步:新建一个maven,将工程命名为activeMQ_spring.在pom.xml文件中导入相关jar包. ①spring开发和测试相关的jar包: spring ...

最新文章

  1. 在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库
  2. Linux-鸟菜-2-主机规划与磁盘分区
  3. Neo4j 导入动态类型关系
  4. 《HTML5与CSS3实战指南》——2.2 基本的HTML5模板
  5. Mecanim动画系统
  6. 【今日CS 视觉论文速览】Part2, 16 Jan 2019
  7. 暖心!湖北伢雷军为家乡再捐1270万 大批紧缺医护物资连夜运抵武汉
  8. 为什么程序要从0开始计数
  9. 嵌套的SQL另外一种写法
  10. 【麦子学院 彭亮 机器学习】3.2决策树应用(准备篇)
  11. DirectX9常用软件运行库
  12. 若干tif文件转换成pdf
  13. K近邻算法(k-Nearest Neighbour, KNN)
  14. windows cmd 快速编辑模式
  15. HTC Vive榜单:盘点一周最受欢迎的VR应用
  16. 微信公众号:服务号、企业订阅号、个人订阅号的差异对比
  17. 《Effective Java》读书笔记五(枚举和注解)
  18. C语言简介及进制换算
  19. 内存 profile (zz)
  20. 老男孩Python自动化开发12期完整版(含作业代码课件)

热门文章

  1. centos8启动zk集群失败:zk Error contacting service. It is probably not running.
  2. java泛型程序设计——注意擦除后的冲突
  3. leetcode初级算法4.只出现一次的数字
  4. neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点
  5. hibernate jpa_使用Hibernate(JPA)一键式删除
  6. pcl_openmap_OpenMap教程–第1部分
  7. java8 streams_当Java 8 Streams API不够用时
  8. 用Spring组成自定义注释
  9. hibernate 调试_Hibernate调试–查找查询的来源
  10. Kogito人机规则-第1部分:进一步解决流口水