首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

在Spring中施用JMS

2012-12-26 
在Spring中使用JMS在Spring中使用JMS 博客分类: ActiveMQ_5.3.2 JMSSpringBeanActiveMQMobile Spring对JMS

在Spring中使用JMS
在Spring中使用JMS 博客分类: ActiveMQ_5.3.2 JMSSpringBeanActiveMQMobile Spring对JMS进行封装,使用起来更简单。以下给出范例代码供参考! 在Spring中可以用JmsTemplate对象来发送、接收消息。 1、连接工厂Xml代码 <bean id="smsConnectionFactory" destroy-method="stop"><property name="connectionFactory"><bean value="tcp://localhost:61616"></property></bean></property></bean><bean id="smsConnectionFactory" destroy-method="stop"><property name="connectionFactory"><bean value="tcp://localhost:61616"></property></bean></property></bean> 在非web/EJB容器中使用pool时,要手动stop,spring不会为你执行destroy-method的方法。 如果使用了PooledConnectionFactory要把 apache-activemq-5.3.0\lib\optional\activemq-pool-5.3.0.jar 加到 classpath中。 2、目的地Xml代码 <bean id="smsDestination" ref="smsConnectionFactory"></property><property name="defaultDestination" ref="smsDestination"></property></bean><bean id="smsJmsTemplate" ref="smsConnectionFactory"></property><property name="defaultDestination" ref="smsDestination"></property></bean> 用JmsTemplate时不用自己提交session.commit()。 用JmsTemplate发送消息:Java代码 jmsTemplate.send(new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { MapMessage map = session.createMapMessage(); map.setString("mobile", mobile); map.setString("content", content); return map; } }); jmsTemplate.send(new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {MapMessage map = session.createMapMessage();map.setString("mobile", mobile);map.setString("content", content);return map;}}); 4、消息监听器Java代码 <bean id="smsMessageListener" lazy-init="false"><property name="connectionFactory" ref="smsConnectionFactory"></property><property name="destination" ref="smsDestination"></property><property name="messageListener" ref="smsMessageListener"></property><property name="taskExecutor" ref="taskExecutor"></property><property name="sessionTransacted" value="true"></property><!-- 应该只是在Destination为Queue的时候才使用多个MessageConsumer --><property name="concurrentConsumers" value="1"></property><property name="maxConcurrentConsumers" value="50"></property><property name="idleTaskExecutionLimit" value="2"></property><property name="receiveTimeout" value="10000"></property><!-- 0:CACHE_NONE,1:CACHE_CONNECTION,2:CACHE_SESSION,3:CACHE_CONSUMER,4:CACHE_AUTO --><property name="cacheLevel" value="0"></property></bean><bean id="smsListenerContainer" lazy-init="false"><property name="connectionFactory" ref="smsConnectionFactory"></property><property name="destination" ref="smsDestination"></property><property name="messageListener" ref="smsMessageListener"></property><property name="taskExecutor" ref="taskExecutor"></property><property name="sessionTransacted" value="true"></property><!-- 应该只是在Destination为Queue的时候才使用多个MessageConsumer --><property name="concurrentConsumers" value="1"></property><property name="maxConcurrentConsumers" value="50"></property><property name="idleTaskExecutionLimit" value="2"></property><property name="receiveTimeout" value="10000"></property><!-- 0:CACHE_NONE,1:CACHE_CONNECTION,2:CACHE_SESSION,3:CACHE_CONSUMER,4:CACHE_AUTO --><property name="cacheLevel" value="0"></property></bean> lazy-init参数值必须设置为false,否则监听不起作用。

热点排行