本文摘自 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 ...