本文共 1568 字,大约阅读时间需要 5 分钟。
1、Camel框架支持大量的企业集成模式,可以大大简化集成组件间的大量服务和复杂的消息流。而Spring框架更注重简单性,仅仅支持基本的最佳实践。
2、Spring消息发送的核心架构是JmsTemplate,隔离了像打开、关闭Session和Producer的繁琐操作,因此应用开发人员仅仅需要关注实际的业务逻辑。
但是JmsTemplate损害了ActiveMQ的PooledConnectionFactory对session和消息producer的缓存机制而带来的性能提升。
3、新的Spring里面,可以设置org.springframework.jms.connection.CachingConnectionFactory的sessionCacheSize ,或者干脆使用ActiveMQ的
PooledConnectionFactory,如下:
1 2 3 4 5 6 7 8 9 10 11 12 | < bean id = "jmsFactory" class = "org.apache.activemq.pool.PooledConnectionFactory" destroy-method = "stop" > < property name = "connectionFactory" > < bean class = "org.apache.activemq.ActiveMQConnectionFactory" > < property name = "brokerURL" > < value >${activemq.brokerURL}</ value > </ property > < property name = "userName" value = "${activemq.userName}" ></ property > < property name = "password" value = "${activemq.password}" ></ property > </ bean > </ property > < property name = "maxConnections" value = "${activemq.maxConnections}" ></ property > </ bean > |
4、不建议使用JmsTemplate的receive()调用,因为在JmsTemplate上的所有调用都是同步的,这意味着调用线程需要被阻塞,直到方法返回,这对性能影响很大。
5、请使用DefaultMessageListenerContainer,它允许异步接收消息并缓存session和消息consumer,而且还可以根据消息数量动态的增加或缩减监听器的数量。
1 2 3 4 5 6 | <!-- 消费者监听器 --> < bean id = "jmsContainer" class = "org.springframework.jms.listener.DefaultMessageListenerContainer" > < property name = "connectionFactory" ref = "jmsFactory" /> < property name = "destination" ref = "destinationTopic" /> < property name = "messageListener" ref = "messageListener" /> </ bean > 本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1916382如需转载请自行联系原作者 我爱大金子 |