仓酷云

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

[学习教程] JAVA网页编程之ActiveMQ第二弹:利用Spring JMS与ActiveMQ通信仓酷云

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

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

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

x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。本文章的完全代码可从我的github中下载:https://github.com/huangbowen521/SpringJMSSample.git
上一篇文章中先容了怎样安装和运转ActiveMQ。这一章次要报告怎样利用SpringJMS向ActiveMQ的MessageQueue中发动静和读动静。
起首必要在项目中引进依附库。


  • spring-core:用于启动Spring容器,加载bean。

  • spring-jms:利用SpringJMS供应的API。

  • activemq-all:利用ActiveMQ供应的API。

在本示例中我利用maven来导进响应的依附库。
pom.xml
  1. 1234567891011121314151617181920212223
复制代码
  1. <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.9.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>4.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.2.RELEASE</version></dependency></dependencies>
复制代码
接上去设置与ActiveMQ的毗连,和一个自界说的MessageSender。
springJMSConfiguration.xml
  1. 1234567891011121314151617181920212223242526272829303132333435363738
复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="location"><value>application.properties</value></property></bean><!--Activemqconnectionfactory--><beanid="amqConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory"><constructor-argindex="0"value="${jms.broker.url}"/></bean><!--ConnectionFactoryDefinition--><beanid="connectionFactory"class="org.springframework.jms.connection.CachingConnectionFactory"><constructor-argref="amqConnectionFactory"/></bean><!--DefaultDestinationQueueDefinition--><beanid="defaultDestination"class="org.apache.activemq.command.ActiveMQQueue"><constructor-argindex="0"value="${jms.queue.name}"/></bean><!--JmsTemplateDefinition--><beanid="jmsTemplate"class="org.springframework.jms.core.JmsTemplate"><propertyname="connectionFactory"ref="connectionFactory"/><propertyname="defaultDestination"ref="defaultDestination"/></bean><!--MessageSenderDefinition--><beanid="messageSender"class="huangbowen.net.jms.MessageSender"><constructor-argindex="0"ref="jmsTemplate"/></bean></beans>
复制代码
在此设置文件中,我们设置了一个ActiveMQ的connectionfactory,利用的是ActiveMQ供应的ActiveMQConnectionFactory类。然后又设置了一个SpringJMS供应的CachingConnectionFactory。我们界说了一个ActiveMQQueue作为动静的吸收Queue。并创立了一个JmsTemplate,利用了之前创立的ConnectionFactory和MessageQueue作为参数。最初自界说了一个MessageSender,利用该JmsTemplate举行动静发送。
以下MessageSender的完成。
MessageSender.java
  1. 12345678910111213141516
复制代码
  1. packagehuangbowen.net.jms;importorg.springframework.jms.core.JmsTemplate;publicclassMessageSender{privatefinalJmsTemplatejmsTemplate;publicMessageSender(finalJmsTemplatejmsTemplate){this.jmsTemplate=jmsTemplate;}publicvoidsend(finalStringtext){jmsTemplate.convertAndSend(text);}}
复制代码
这个MessageSender很复杂,就是经由过程jmsTemplate发送一个字符串信息。
我们还必要设置一个Listener来监听和处置以后的MessageQueue。
springJMSReceiver.xml
  1. 12345678910111213141516
复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--MessageReceiverDefinition--><beanid="messageReceiver"class="huangbowen.net.jms.MessageReceiver"></bean><beanclass="org.springframework.jms.listener.SimpleMessageListenerContainer"><propertyname="connectionFactory"ref="connectionFactory"/><propertyname="destinationName"value="${jms.queue.name}"/><propertyname="messageListener"ref="messageReceiver"/></bean></beans>
复制代码

在上述xml文件中,我们自界说了一个MessageListener,而且利用Spring供应的SimpleMessageListenerContainer作为Container。
以下是MessageLinser的详细完成。
MessageReceiver.java
  1. 123456789101112131415161718
复制代码
  1. packagehuangbowen.net.jms;importjavax.jms.*;publicclassMessageReceiverimplementsMessageListener{publicvoidonMessage(Messagemessage){if(messageinstanceofTextMessage){TextMessagetextMessage=(TextMessage)message;try{Stringtext=textMessage.getText();System.out.println(String.format("Received:%s",text));}catch(JMSExceptione){e.printStackTrace();}}}}
复制代码
这个MessageListener也相称的复杂,就是从Queue中读掏出动静今后输入到以后把持台中。

比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
乐观 该用户已被删除
沙发
发表于 2015-1-20 20:13:36 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-25 16:39:19 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
简单生活 该用户已被删除
地板
发表于 2015-1-25 23:07:30 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
精灵巫婆 该用户已被删除
5#
发表于 2015-1-26 23:08:22 来自手机 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
admin 该用户已被删除
6#
发表于 2015-2-4 21:22:31 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
飘灵儿 该用户已被删除
7#
 楼主| 发表于 2015-2-10 12:25:12 | 只看该作者
是一种使用者不需花费很多时间学习的语言
透明 该用户已被删除
8#
发表于 2015-2-16 22:21:46 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
爱飞 该用户已被删除
9#
发表于 2015-3-5 11:00:18 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
活着的死人 该用户已被删除
10#
发表于 2015-3-6 20:35:18 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
兰色精灵 该用户已被删除
11#
发表于 2015-3-9 12:55:24 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
不帅 该用户已被删除
12#
发表于 2015-3-9 20:21:16 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
深爱那片海 该用户已被删除
13#
发表于 2015-3-12 16:46:34 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
莫相离 该用户已被删除
14#
发表于 2015-3-20 00:39:32 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 00:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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