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.接受消息
----
spring mvc+tomcat源码分析视频(链接复制在浏览器打开)
https://study.163.com/course/courseMain.htm?share=2&shareId=480000001919582&courseId=1209399899&_trace_c_p_k2_=6d81bc445e9c462ab8d6345e40f6b0bf