仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 484|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页编程之ActiveMQ第五弹:增添ReDelivery功效仓酷云

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在利用MessageQueue的过程当中,总会因为各种缘故原由而招致动静失利。一个典范的场景是一个天生者向Queue中发动静,内里包括了一组邮件地点和邮件内容。而消耗者从Queue中将动静一条条读出来,向指定邮件地点发送邮件。消耗者在发送动静的过程当中因为各种缘故原由会招致失利,好比收集超时、以后邮件服务器不成用等。如许我们就但愿创建一种机制,关于未发送乐成的邮件再从头发送,也就是从头处置。从头处置凌驾必定次数还不乐成,就保持对该动静的处置,纪录上去,持续对残剩动静举行处置。
ActiveMQ为我们完成了这一功效,叫做ReDelivery(从头送达)。当消耗者在处置动静时有非常产生,会将动静从头放回Queue里,举行下一次处置。当凌驾重试次数时,动静会被安排到一个特别的Queue中,即DeadLetterQueue,简称DLQ,用于举行后续剖析。
空话未几说,一同来完成吧。(该示例中的全体代码已安排到GitHub上,请自行下载。)
仍是接着本系列中的示例代码来举行。要完成ReDelivery功效,要给LinsterContainer加上事件处置。设置SimpleMessageListenerContainer的sessionTransacted属性为true。
activeMQConnection.xml
  1. 123456789
复制代码
  1. <!--MessageReceiverDefinition--><beanid="messageReceiver"class="huangbowen.net.jms.retry.MessageReceiver"></bean><beanclass="org.springframework.jms.listener.SimpleMessageListenerContainer"><propertyname="connectionFactory"ref="connectionFactory"/><propertyname="destinationName"value="${jms.queue.name}"/><propertyname="messageListener"ref="messageReceiver"/><propertyname="sessionTransacted"value="true"/></bean>
复制代码
然后创立一个ReDeliveryPolicy,来界说ReDelivery的机制。
activeMQConnection.xml
  1. 1
复制代码
  1. <amq:redeliveryPolicyid="activeMQRedeliveryPolicy"destination="#defaultDestination"redeliveryDelay="100"maximumRedeliveries="4"/>
复制代码
这里设置ReDelivery的工夫距离是100毫秒,最年夜重发次数是4次。
在ActiveMQ的ConnectionFactory中使用这个Policy。就是给ConnectionFactory设置属性redeliveryPolicy为我们方才创立的Policy。
activeMQConnection.xml
  1. 123456
复制代码
  1. <!--Activemqconnectionfactory--><beanid="amqConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory"><propertyname="brokerURL"value="${jms.broker.url}?"/><propertyname="useAsyncSend"value="true"/><propertyname="redeliveryPolicy"ref="activeMQRedeliveryPolicy"/></bean>
复制代码
如许ReDelivery机制就设置好了。那末怎样能证实我不是在忽悠你们那?固然最好的举措是写主动化测试来测试这个功效了。
起首修正下broker的设置,将其抵消息的耐久化设置为false,如许每次运转测试时Queue中动静都为0,用于复原现场。然后设置一个DestinationPolicy,当动静凌驾重试次数仍未被准确处置时,就把它放进到以DLQ.为前缀的Queue中。因为ActiveMQ默许对非耐久化的Message不放进DLQ中的,以是手动设置processNonPersistent为true。
activeMQConnection.xml
  1. 123456789101112131415161718
复制代码
  1. <amq:brokerid="activeMQBroker"persistent="false"><amq:transportConnectors><amq:transportConnectoruri="${jms.broker.url}"/></amq:transportConnectors><amq:destinationPolicy><amq:policyMap><amq:policyEntries><amq:policyEntryqueue=">"><amq:deadLetterStrategy><amq:individualDeadLetterStrategyqueuePrefix="DLQ."useQueueForQueueMessages="true"processExpired="true"processNonPersistent="true"/></amq:deadLetterStrategy></amq:policyEntry></amq:policyEntries></amq:policyMap></amq:destinationPolicy></amq:broker>
复制代码

Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 20:11:42 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 20:18:46 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
因胸联盟 该用户已被删除
地板
发表于 2015-1-30 19:45:22 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
冷月葬花魂 该用户已被删除
5#
发表于 2015-1-30 22:51:46 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
小妖女 该用户已被删除
6#
发表于 2015-2-2 15:03:52 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
飘灵儿 该用户已被删除
7#
发表于 2015-2-7 22:55:01 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
若天明 该用户已被删除
8#
发表于 2015-2-21 02:39:54 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
山那边是海 该用户已被删除
9#
发表于 2015-3-2 01:33:20 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
海妖 该用户已被删除
10#
发表于 2015-3-11 01:38:17 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
只想知道 该用户已被删除
11#
发表于 2015-3-19 01:37:15 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
蒙在股里 该用户已被删除
12#
发表于 2015-3-26 21:34:25 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 15:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表