论坛首页 Java企业应用论坛

Spring JMS (3)

浏览 10280 次
锁定老帖子 主题:Spring JMS (3)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-07   最后修改:2011-04-07
3. SingleConnectionFactory
  SingleConnectionFactory类实现了ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory接口。
SingleConnectionFactory的createConnection()方法总是返回相同的Connection对象,如果出现Exception,共享连接可以自动的恢复。可以通过SingleConnectionFactory的构造函数中传入Connection对象或者ConnectionFactory对象,用来创建被代理的连接对象。SingleConnectionFactory.createConnection方法返回的连接是个代理,它忽略了对stop和close方法的调用(连接会在SingleConnectionFactory.destroy方法中关闭)。
protected Connection getSharedConnectionProxy(Connection target) {
		List<Class> classes = new ArrayList<Class>(3);
		classes.add(Connection.class);
		if (target instanceof QueueConnection) {
			classes.add(QueueConnection.class);
		}
		if (target instanceof TopicConnection) {
			classes.add(TopicConnection.class);
		}
		return (Connection) Proxy.newProxyInstance(
				Connection.class.getClassLoader(),
				classes.toArray(new Class[classes.size()]),
				new SharedConnectionInvocationHandler(target));
	}



SingleConnectionFactory的reconnectOnException属性用来指定是否在连接抛出JMSException的时候,对连接进行重置,重置后如果再调用createConnection方法,那么会返回一个新的连接。

3.1 CachingConnectionFactory
  CachingConnectionFactory继承了SingleConnectionFactory,增加了MessageProducer和Session的缓存功能。
private int sessionCacheSize = 1;  //默认对Session的缓存为1
private boolean cacheConsumers = true; //默认缓存消息消费对象
private boolean cacheConsumers = true; //默认缓存消息生产对象


内部类CachedSessionInvocationHandler实现了java.lang.reflect.InvocationHandler接口。当我们调用getSession()方法去获得一个缓存的Session,会产生一个缓存的Session代理对象。

   发表时间:2011-04-07  
很感兴趣,能不能详细点,或者有点深度。
0 请登录后投票
   发表时间:2011-04-07  
kimmking 写道
很感兴趣,能不能详细点,或者有点深度。

终于把kimmking惹怒了...
0 请登录后投票
   发表时间:2011-04-07  
Technoboy 写道
kimmking 写道
很感兴趣,能不能详细点,或者有点深度。

终于把kimmking惹怒了...

没怒,我挺感兴趣的,spring-JMS我们也在用。
0 请登录后投票
   发表时间:2011-04-07   最后修改:2011-04-07
没用过Spring实现的JMS,回翻了之前的资料,也没找到关于JMS的资料。

JMS产品适用于代码复杂度要求不高,传输效率较好的情景?
相对WS,RMI,Socket等其他解决方案
0 请登录后投票
   发表时间:2011-04-07  
C_J 写道
没用过Spring实现的JMS,回翻了之前的资料,也没找到关于JMS的资料。

JMS产品适用于代码复杂度要求不高,传输效率较好的情景?
相对WS,RMI,Socket等其他解决方案

一般 用于 对消息可靠性要求较高的地方。
0 请登录后投票
   发表时间:2011-04-07  
看来我猜测没错。
一个高可靠性的Socket实现。
0 请登录后投票
   发表时间:2011-04-07  
kimmking 写道
Technoboy 写道
kimmking 写道
很感兴趣,能不能详细点,或者有点深度。

终于把kimmking惹怒了...

没怒,我挺感兴趣的,spring-JMS我们也在用。

我们是spring+mq
0 请登录后投票
   发表时间:2011-04-07  
kimmking 写道
Technoboy 写道
kimmking 写道
很感兴趣,能不能详细点,或者有点深度。

终于把kimmking惹怒了...

没怒,我挺感兴趣的,spring-JMS我们也在用。

博客里前面两节的内容
0 请登录后投票
   发表时间:2011-04-07  
Technoboy 写道
kimmking 写道
Technoboy 写道
kimmking 写道
很感兴趣,能不能详细点,或者有点深度。

终于把kimmking惹怒了...

没怒,我挺感兴趣的,spring-JMS我们也在用。

我们是spring+mq

spring-jms 封装了一些jms的壳。

什么mq? websphere mq,activemq,jboss,rabbit,sonic,openMQ,。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics