JMS基础
来源:互联网 发布:最好的工业设计软件 编辑:程序博客网 时间:2024/05/22 13:13
public void send(TextMessage msgText){
Connection connection = null;
try {
InitialContext ctx = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) ctx.lookup("jndi/jmsConn");
connection = factory.createConnection();
Destination dest = (Destination) ctx.lookup("jndi/dest");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = session.createProducer(dest);
sender.send(msgText);
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
} finally{
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
1.6 接收消息
同步接收:MessageConsumer#receive(),当目标地址中没有消息时,主程序阻塞,也可以设定超时时间。
异步接收:向MessageConsumer注册一个MessageListener,在注册之前必须先将Connection启动,Connection#start(),MessageConsumer#setMessageListener(this)。
void onMessage(Message message);
Note:发送或接收完消息,必须断开连接!
2. 消息重复接收问题
问题:客户端接收地址消息-->MOM因故障关闭-->客户端发送回执消息失败-->MOM重启-->客户端再次接收同一条消息
Solution1:采用JTA全局事务,将数据库操作和JMS操作纳入到同一个全局事务,但这也性能影响很大;
Solution2:客户端自身提供消息重复性检查功能,接收消息后进行消息处理的逻辑仅工作在本地数据源事务中。
- 【Java.JMS】JMS基础
- jms基础
- JMS基础
- jms基础
- JMS 基础
- JMS基础
- JMS基础
- jms基础
- JMS基础
- JMS基础概念
- jms基础篇
- jms的基础
- (一):JMS基础
- JMS基础 - 精华版
- JMS的基础认识
- jms基础实践
- JMS基础总结
- java基础(26)--JMS
- Uva Oj 11039 - Building designing
- 代理模式
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 黑马程序员_集合
- Linux进程间通信
- JMS基础
- vc串口通信
- Quoit Design
- POJ3295--Tautology
- 第三周项目三
- RAC Clusterware 的日志体系结构
- 集合List的删除
- 网络编程前台基础之HTML
- 危机处理