JMS 使用

来源:互联网 发布:1hhhh域名升级访问中 编辑:程序博客网 时间:2024/06/05 03:10

本文摘自 spring in action 。




消息代理:ActiveMQ


连接工厂:

<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">   <property name="brokerURL" value="tcp://localhost:61616"/></bean>


消息目的地:
<bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">  <construtor-arg value="spitter.queue"/></bean>


使用传统的JMS(不使用Spring)发送消息:


。。。


Spring的一个设计理念是规避检查型异常。使用Spring的模板可以将一些检查型异常“转为”非检查型异常,
可避免一些必要的异常处理。模板的另一好处是省略了大量的重复性代码,避免了“重复自己”。


JMS模板:
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  <!--连接工厂-->  <property name="connectionFactory" ref="connectionFactory" />  <!--默认的目的地-->  <property name="defaultDestinationName" value="sppittle.alert.queue"/></bean>


  
发送消息:
jmsTemplate.send("spitter.alert.queue",new MessageCreator(){     public Message createMessage(Session session) throws JMSException {     return session.createObjectMessage(spitter); } }             );




接收消息:
ObjectMessage receivedMessage = (ObjectMessage) jmsTemplate.receive();//receive()是同步的return (Spitter) receivedMessage.getObject();


  
实现异步接收消息--


配置消息监听器:
<bean id="spittleHandler" class="com.habuma.spitter.alerts.SpittleAlertHandler" /><jms:listener-container connection-factory="connectionFactory">    <jms:listener destination="spitter.alert.queue" ref="spittleHandler" method="processSpittle" /></jms:listener-container>



and ...