利用Spring中的JmsTemplate来进行ActiveMQ的整合
? ?发送消息
?
? ?
template.send((javax.jms.Destination) destination, new MessageCreator(){ public Message createMessage(Session session) throws JMSException { return session.createTextMessage("hello"); } 接受消息
?
jmsTemplate接收消息十分的简单,只需要调用template.receive()方法,receive方法是同步的,默认情况下,对receive()方法的调用会造成阻塞,知道消息到达目标----如果必要,永远等下去。为了避免对消息内容等待,可以配置jmsTemplate时,通过设置receiveTimeout属性来指定接收消息超时间。template.receive()会从默认目标接收消息,如果你希望指定一个目标,可以传一个目标。如:template.receive("myQueue").
同步接收消息并不是spring唯一的选择,消息监听器可以实现异步。activemq提供了messageListener接口,来为我们实现异步的接收消息。这样我们就不需要再手动的调用receive方法获取信息,当有消息发送到队列中时,就会自动的接受消息。我采用的是多线程异步的方式,效率要比同步的好一些。
?
?
自动将消息转化为Java对象
Spring通过MessageConverter接口提供了对消息转换的支持。此时,发送和接收消息要换成template.convertAndSend(message);template.receiveAndConvert();
可是jmsTemplate如何知道消息转换器呢?需要在配置jmsTemplate的时候,加上messageConverter属性。
<property?name="messageConverter"?ref="messageObj"></property>?
?