spring中模板模式的应用
来源:互联网 发布:ios9越狱mac 编辑:程序博客网 时间:2024/05/18 02:02
1.在代码中调用
public class AlertServiceImpl implements AlertService { @Autowired JmsTemplate jmsTemplate; @Override public void sendAlert(final String alert) { jmsTemplate.send("test.myqueue",new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { return session.createTextMessage(alert) ;//To change body of implemented methods use File | Settings | File Templates. } }); }}
2.源码分析
JmsTemplate中封装基本操作
public void send(final String destinationName, final MessageCreator messageCreator) throws JmsException { this.execute(new SessionCallback() { public Object doInJms(Session session) throws JMSException { Destination destination = JmsTemplate.this.resolveDestinationName(session, destinationName); JmsTemplate.this.doSend(session, destination, messageCreator); return null; } }, false);}
public <T> T execute(SessionCallback<T> action, boolean startConnection) throws JmsException { Assert.notNull(action, "Callback object must not be null"); Connection conToClose = null; Session sessionToClose = null; Object var6; try { Session ex = ConnectionFactoryUtils.doGetTransactionalSession(this.getConnectionFactory(), this.transactionalResourceFactory, startConnection); if(ex == null) { conToClose = this.createConnection(); sessionToClose = this.createSession(conToClose); if(startConnection) { conToClose.start(); } ex = sessionToClose; } if(this.logger.isDebugEnabled()) { this.logger.debug("Executing callback on JMS Session: " + ex); } var6 = action.doInJms(ex); } catch (JMSException var11) { throw this.convertJmsAccessException(var11); } finally { JmsUtils.closeSession(sessionToClose); ConnectionFactoryUtils.releaseConnection(conToClose, this.getConnectionFactory(), startConnection); } return var6;}
execute该方法张有基本的创建和关闭 connection 和session操作,中间利用session做的具体个性化操作,则通过SessionCallback 回调方式传入
回调接口定义
public interface SessionCallback<T> { T doInJms(Session var1) throws JMSException;}
3.接受消息
1 0
- spring中模板模式的应用
- spring 中jdbc模板模式应用
- spring中应用模板模式封装ElasticsearchTemplate
- 模板模式的应用
- Spring中模板模式和回调模式的讲解
- Spring中模板模式和回调模式的讲解
- Spring中模板模式和回调模式的讲解
- Spring中模板模式和回调模式的讲解
- Spring中模板模式和回调模式的讲解
- Spring中模板模式和回调模式的讲解
- 模板模式在Spring 中的应用
- 模板模式在Spring 中的应用
- Java中抽象类的实际应用:模板设计模式
- spring实战-Spring-Tiles模板的应用
- Spring源码:Spring 容器资源加载模板模式应用
- Mybatis Spring SpringMVC hibernate中设计模式的应用
- 参考Spring模板模式和回调接口的一个应用
- Spring中模板模式和回调模式(一)
- busybox动态编译静态编译的区别
- SpannableString文本的 格式化 保存,显示,事件处理
- 关于powerdesigner链接Mysql数据库和出现的问题解决方案
- php工厂模式
- 文章标题
- spring中模板模式的应用
- 使用client-go 进行k8s相关操作-restclient(三)
- 从输入url到返回页面 的整个过程
- 无序字母对 洛谷 1341 欧拉通路/欧拉回路
- 七月算法课程《python爬虫》第六课: scrapy爬虫整体示例
- IDEA配置Tomcat
- android 7.0 camera 打开流程
- Django 数据库错误
- 解决金山词霸2010牛津旗舰版破解词典丢失的方法