|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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- 1234567891011121314151617181920212223
复制代码- <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- 1234567891011121314151617181920212223242526272829303132333435363738
复制代码- <?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- 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- <?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- 123456789101112131415161718
复制代码- 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()方法不能获取对象的名字。 |
|