AmazonSQS和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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.3-3.9 周记

3.3-3.10 1. NIM游戏 百度链接&#xff1a;https://baike.baidu.com/item/Nim%E6%B8%B8%E6%88%8F/6737105?fraladdin 定义&#xff1a; P局面&#xff1a;先手必败N局面&#xff1a;先手必胜P局面的所有子局面都是N局面。N局面的子局面中必有一个是P局面 性质&#xff1a;\(a_…

关于类的使用的几个关键

类的定义和声明必须放在main函数前 如果类中只有申明类而没有定义&#xff0c;则只能定义指针&#xff1a;Test *test&#xff1b;如果不定义类而仅仅声明类的话&#xff0c;当使用Test test时&#xff0c;编译器只知道Test是个class&#xff0c;但留多大空间&#xff1f;怎么初…

java判断对象已死_Java的JVM判断对象已死的基本算法分析

jvm中有各种的垃圾收集器&#xff0c;每个收集器都有各自的算法。但是一切的根本都需要找到找到应该被消除的对象&#xff0c;理解如何找到死亡对象才是理解垃圾收集器的基础。01两个基本算法a、引用记数法&#xff1a;对象中加一个引用计数器&#xff0c;每次被引用计数器加一…

Java开发中更多常见的危险信号

在《 Java开发中的常见危险信号》一文中&#xff0c;我研究了一些不一定本身就是错误或不正确的做法&#xff0c;但它们可能表明存在更大的问题。 这些“红色标记”类似于“代码气味”的概念&#xff0c;我在这篇文章中引用的某些特定“红色标记”被称为“代码气味”。 正如我在…

python平均分由高到低顺序排列输出选手编号和最后得分_python 字典的使用案例二:求平均分,并按平均分由高到低输出选手编号和最后得分...

校园好声音大赛&#xff0c;三位选手得分&#xff0c;由8位评委给出。请根据评分表&#xff0c;将每们选手的得分去掉一个最高分和一个最低分后求平均分&#xff0c;并按照平均分由高到低输出选手编号和最后得分。dicScores {012: [90, 94, 97, 86, 85, 89, 88, 85], 005: [91…

java开发 职业技能_java编程开发程序员需要具备哪些职业技能

随着互联网的不断发展&#xff0c;java编程开发可以说是目前学习人数和应用范围非常多的一种编程语言了&#xff0c;而今天我们就一起来了解一下&#xff0c;java编程开发程序员需要具备哪些职业技能。1、数据结构和算法分析数据结构和算法分析&#xff0c;对于一名程序员来说&…

Django model转字典的几种方法

平常的开发过程中不免遇到需要把model转成字典的需求&#xff0c;尤其是现在流行前后端分离架构&#xff0c;Json格式几乎成了前后端之间数据交换的标准&#xff0c;这种model转dict的需求就更多了&#xff0c;本文介绍几种日常使用的方法以供参考&#xff0c;所有例子均基于Dj…

微信小程序日历课表

最近项目中使用到了日历&#xff0c;在网上找了一些参考&#xff0c;自己改改,先看效果图 wxml <view class"date"><image class"direction" src"/images/icon/left.png" bindtapminusMouth/><label>{{year}}年{{mouth}}月<…

Java:将条件移至消息文件

Java类ResourceBundle和MessageFormat提供了一个很好的工具集&#xff0c;用于解决Java应用程序内部的本地化消息。 这篇文章提供了一个小示例&#xff0c;说明如何使用ChoiceFormat将与消息相关的简单条件从Java代码移动到消息文件中。 如果您已经知道ChoiceFormat我认为您不会…

【LuoguP3241】[HNOI2015] 开店

题目链接 题意 给出一棵边带权的树&#xff0c;多次在线询问一个点到一个区间内的点的距离和。 Sol 分块过不了的 一个 trick &#xff0c;都知道要算两点之间距离可以拆成到根的距离和他们的 LCA 到根的距离 &#xff0c;其实要算多个点到一个点距离也可以使用一个类似的 tric…

windows中的项目拷贝到linux中,部分数据不显示的原因

linux严格区分大小写&#xff0c;可能是数据表名大小写导致的。 如上传文件不成功&#xff0c;可能是系统权限导致的。转载于:https://www.cnblogs.com/miaoxingren/p/9784743.html

java并发数据共享机制_Java并发编程:核心理论之数据共享性

原标题&#xff1a;Java并发编程&#xff1a;核心理论之数据共享性并发编程是Java程序员最重要的技能之一&#xff0c;也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解&#xff0c;同时要求编程者逻辑清晰、思维缜密&#xff0c;这样才能写出高效、…

调用天气预报接口

方案一&#xff1a; 浏览器由于安全的限制&#xff0c;不允许跨域访问。但是PHP服务器是允许的。我们可以通过使用PHP文件做代理&#xff0c;通过PHP来调用接口。 详细接口分析可参看&#xff1a;http://www.cnblogs.com/wangjingblogs/p/3192953.html 返回JSON格式 PHP代码…

测试集准确率不变_这个医疗AI准确率突破天际,招来了铺天盖地的质疑

转自 | 量子位只要输入一次心跳的波谱。就能判断一个人有没有发生心力衰竭 (CHF) &#xff0c;准确率100%。这是英国华威大学领衔的团队&#xff0c;用机器学习方法做出的新成果。还登上了影响因子2.943的Biomedical Signal Processing and Control期刊。准确率眼看就要突破天际…

JavaFX自定义控件– Nest Thermostat第1部分

几周前&#xff0c;由于Hendrik Ebbers的出色文章 &#xff0c;我决定花一些时间观看有关JavaFX的JavaOne讨论。 我不得不说我已经学到了很多东西&#xff0c;只是看这些视频&#xff08;即使我还没有完成&#xff09;&#xff01; Gerrit的“使用力&#xff0c;路克”或使用J…

PHP涉及的所有英文单词

PHP涉及的所有英文单词拦路虎 PHP再火&#xff0c;也会让一部同学心生畏惧&#xff0c;因为看到编辑器中那一串串英文单词&#xff0c;担心自己英文不好&#xff0c;从而对能学会PHP的决心产生动摇。其实大可不必&#xff0c;英文在学习PHP过程中真的连级别都够不上&#xff0c…

java 不编译咋办_java – 为什么JVM不编译整个程序,而不是逐个编译?

他所说的是,在运行时将所有字节码编译成机器语言是不切实际的.您可以预先编译所有内容,但这并不是JIT所采用的方法.一方面,不知道程序有多大.人们在30分钟的启动时会相当不高兴,因为它编译了可以找到的每个库(给定的Java程序不在一个文件中,它可以访问类路径中的所有内容)对于另…

mysql .pdb是什么文件_计算广告算法到底要做什么?

这个话题在这个专栏开篇就该去讲。恰逢今天公司业务和财务培训(20190216)之后&#xff0c;也有一些思索&#xff0c;索性就都汇总写下来。本文杂述&#xff0c;不尽完备&#xff0c;但是值得不断完善。我喜欢一句话“革命不是请客吃饭&#xff0c;不是做文章&#xff0c;不是绘…

浅析inline-block--使用inline-block创建布局

inline-block前端程序猿们肯定不陌生&#xff0c;它是display属性的一个取值。 之所以称之为inline-block。是因为它兼具行内元素(inline-element)和块级元素(block-element)的特征。 块级元素&#xff08;block elements&#xff09;,来源于CSS盒子模型。块级元素包含width h…

Cookie和Session版的登录验证

URL : from django.conf.urls import url from app01 import viewsurlpatterns [url(r^login/, views.login),url(r^home/, views.home),url(r^index/, views.index), ] 前端 : <form action"" method"post">{% csrf_token %}<input type"t…