(转)JMS事务
转:http://blog.csdn.net/jixiuffff/article/details/5780834
事务
session = conn.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
true 表示这个会话是事务性的,需要显式的commit 或者rollback ()
没有begin()方法,眨动打开事务
public void send() {
try {
publicMessageFlag("start");
publicMessage("msg1");
publicMessage("msg2");
publicMessage("msg3");
publicMessageFlag("end");
session.commit();
} catch (JMSException e) {
e.printStackTrace();
try {
session.rollback();
} catch (JMSException e1) {
e1.printStackTrace();
}
}//发送一个空的bytemessage 消息,标志着这一组消息的开始
}
package org.jixiuf.chat;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.jixiuf.util.JNDIUtil;
public class ChatServer {
QueueConnection conn;
Queue requestQueue;
QueueSession session;
int age = 10;
QueueSender sender;
public ChatServer() {
conn = JNDIUtil.crateQueueConnection();
requestQueue = JNDIUtil.lookupQueue("requestQueue");
try {
session = conn.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(requestQueue);
} catch (JMSException e) {
e.printStackTrace();
}
}
// flag 是"start" ,和"end" 分别表示这组消息的开头
public void publicMessageFlag(String flag) throws JMSException {
BytesMessage msg = null; msg = session.createBytesMessage();
msg.setStringProperty("JMSXGroupID", "group1");
msg.setStringProperty("flag", flag);
sender.send(msg);
}
// flag 是"start" ,和"end" 分别表示这组消息的开头
public void publicMessage(String msgStr)throws JMSException {
TextMessage msg; msg = session.createTextMessage();
msg.setStringProperty("JMSXGroupID", "group1");
msg.setText(msgStr);
sender.send(msg); }
public void send() {
try {
publicMessageFlag("start");
publicMessage("msg1");
publicMessage("msg2");
publicMessage("msg3");
publicMessageFlag("end");
session.commit();
} catch (JMSException e) {
e.printStackTrace();
try {
session.rollback();
} catch (JMSException e1) {
e1.printStackTrace();
}
}//发送一个空的bytemessage 消息,标志着这一组消息的开始 }
public void exit() {
try {
conn.close();
} catch (JMSException e) {
e.printStackTrace();
}
System.exit(0);
}
public static void main(String[] args) {
ChatServer server = new ChatServer();
server.send();
server.exit();
}
}
(转)JMS事务的更多相关文章
- Jms的MessageListener中的Jms事务
摘要 一般来说,如果为JmsTemplate做了事务配置,那么它将会与当前线程的数据库事务挂钩,并且仅在数据库事务的afterCommit动作中提交. 但是,如果一个MessageListener在接 ...
- JMS—事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.JmsTransactio ...
- Spring整合JMS——事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.JmsTransactio ...
- 学习ActiveMQ(七):JMS消息的事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.JmsTransactio ...
- [转]Spring3核心技术之事务管理机制
原文地址:http://chouyi.iteye.com/blog/1675199 Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案. http://jinnians ...
- ActiveMQ学习笔记(二) JMS与Spring
上文可见,JMS Native API使用起来不是特别方便.好在Spring提供了很好的JMS支持. (一)配置ConnectionFactory 如果使用连接池的话,不要忘记activemq-poo ...
- JMS - 事务性消息
JMS 事务遵从发送操作与接收操作相互分离的约定.下图显示的是一个事务性发送,其中一组消息要么能够保证全部到达消息服务器,要么连一条消息也不能保证到达消息服务器.从发送者的角度来看,JMS 提供者为这 ...
- Spring中的事务管理详解
在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...
- 开涛spring3(9.2) - Spring的事务 之 9.2 数据库事务概述
9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口 PlatformTransactionManager,从而能支持 ...
随机推荐
- spring boot中读取配置文件的两种方式
application.properties test.name=测试 test.url=www.test.com 1.@Value注解 在controller里可以这样直接调用 @Value(&qu ...
- delphi 运行时提升软件到管理员权限
//以管理员身份运行procedure RunAsAdmin(hWnd: HWND; aFile: string; aParameters: string);varsei: TShellExecute ...
- Selenium之Android使用学习
20140507 Selenium一般用在web自动化上,为什么Android上也能用呢? 如图,手机端和DB联动:手机端的客户端给server发数据流,进行增删改查操作,这种写数据用update更新 ...
- 膜神犇 DPH
神犇 DPH 让我写博客.但是,似乎我已经开始写了?!! I am young and naïve!!! Let us orz DPH! 上节课讲DFS,这个是我最擅长的.“暴力出奇迹”!
- BZOJ 4545
bzoj 4545 给定一个踹树,支持几种操作. 本质不同子串询问 加入子树 询问字符串\(S\) 在树上的出现次数. 好码好码 重点就是维护\(parent\) 树,考虑用\(LCT\)维护此树. ...
- Struts1.3——Struts入门
1.Struts的几个基本概念 1.struts是一个开源框架(frameset) 2.struts是一个Web框架 3.struts是一个基于MVC的Web框架 2.为什么有struts 因为我们对 ...
- POI教程
很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告.有时,一个应用程序甚至希望将Excel文件作为输入数据.例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Ex ...
- centos 7 安装mysql5.7
1.进入到要存放安装包的位置 cd /home/lnmp 2.查看系统中是否已安装 MySQL 服务,以下提供两种方式: rpm -qa | grep mysql yum list installed ...
- Dubbo 系列(07-1)集群容错 - 服务字典
Dubbo 系列(07-1)集群容错 - 服务字典 [toc] Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 本篇文章,将开始分析 Dubbo 集群容错方面的 ...
- spring配置mybatis的sqlsessionfactory
<!--读入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.bean ...