「java异步事务传递」java异步消息处理机制

博主:adminadmin 2023-01-14 01:45:08 488

本篇文章给大家谈谈java异步事务传递,以及java异步消息处理机制对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何在Spring事务提交后进行异步操作

实现方案

使用TransactionSynchronizationManager在事务提交之后操作

public void insert(TechBook techBook){

bookMapper.insert(techBook);

// send after tx commit but is async

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {

@Override

public void afterCommit() {

System.out.println("send email after transaction commit...");

}

}

);

ThreadLocalRandom random = ThreadLocalRandom.current();

if(random.nextInt() % 2 ==0){

throw new RuntimeException("test email transaction");

}

System.out.println("service end");

}

该方法就可以实现在事务提交之后进行操作

操作异步化

使用mq或线程池来进行异步,比如使用线程池:

private final ExecutorService executorService = Executors.newFixedThreadPool(5);

public void insert(TechBook techBook){

bookMapper.insert(techBook);

// send after tx commit but is async

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {

@Override

public void afterCommit() {

executorService.submit(new Runnable() {

@Override

public void run() {

System.out.println("send email after transaction commit...");

try {

Thread.sleep(10*1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("complete send email after transaction commit...");

}

});

}

}

);

// async work but tx not work, execute even when tx is rollback

// asyncService.executeAfterTxComplete();

ThreadLocalRandom random = ThreadLocalRandom.current();

if(random.nextInt() % 2 ==0){

throw new RuntimeException("test email transaction");

}

System.out.println("service end");

}

求JAVA项目经验

工作经验

---------------------------------------------

公司名称: 河北新龙科技集团

职位名称: java程序员 工作时间 : 2006-11至2007-10

项目名称:药品进货管理系统

项目简介:项目为了提供医药公司进货管理系统其内容如:实际采购情况、客户管理、系统管理。

开发工具:BEA workshop for Jsp、Mysql5.0、Tomcat5.5、SVN、PowerDesigner。

采用技术:采用行业最流行技术Struts+Hibernate+Spring分层架构模型、基于MVC2程序架构、采用了Mysql数据库管理系

统。

项目技术:

1、系统分为表现层、控制层、业务逻辑层、DAO层和最终数据库五层架构。

2、系统中大量采用了代理模式、门面模式、模板模式等经典设计模式。 

3、项目WEB层采用当前流行的MVC模式,Struts框架(B/S),配合使用JSTL和HTML页面元素,使用AJAX技术实现异步无刷新,

引用Json实现数据异步传递。

4、持久层使用轻量级映射框架 Hibernate。

5、服务层面向接口编程,使用代理模式,由Spring托管,DAO层使用Spring 提供的Hibernate 模板访问数据库, POJO类

由Middlegen生成,引用BeanUtils包进行DTO对象与POJO之间的转换,由Spring托管Struts的Action,Service层 ,DAO层

的接口实现类。

6、系统通过POI实现EXCEL导入导出功能、通过osworkflow实现工作流平台Quartz调度作业计划、log4j记录系统日值等。

负责模块::品种库、品牌/商标管理、实际采购情况、盘点维护模块的编码工作

项目名称:新闻发布系统

运行环境:TOMCAT5.5.20 应用服务器,Windows 2000

开发工具:MyEclipse Enterprise Workbench 5.1.0 GA,Macromedia Dreamweaver MX

采用技术:HTML、JavaScript、FCKeditor、Struts、基于Moduel2的MVC程序架构、基于Web开发的组件应用,SQL Server

数据库管理系统(采用JDBC连接)。

项目描述:整个项目由前台的公告显示模块和后台管理模块组成。基于http协议的B/S结构WEB应用程序。采用MVC2架构、

Web界面、四层结构(Browser、Web Container、J2EE Server、Database)的项目分析、设计和开发。

数据库系统:JDBC、MSSQLServer实现,在MSSQLServer、Oracle上可迁移。

责任描述:公告的发布、修改、删除、当天公告的查看;前台页面的显示。

项目名称:企业即时通软件

项目简介:企业即时通(Corperation Messager)软件是一款供企业或公司内部使用的网络聊天工具,主要用于员工之间

的即时通信与交流。它主要由服务器端程序和客户端程序两部分组成,整体采用Java平台进行开发并实现,用户数据选用

Microsoft SQL Server 2000进行统一管理。

项目技术:采用JDBC连数据库,采用C/S架

---------------------------------------------

公司名称: 北京京师木铎有限公司

职位名称: java工程师 工作时间 : 2007-12至今

工作描述: 河北省违法犯罪综合信息系统

项目简介:系统主要分为 提示信息,采集信息,查询,案件串并,统计、考核,系统设置六个子系统。(将原来的C/S结构

升级为B/S结构并整合数据结构)

提示信息:是将采集信息中需要上报公安部信息统一显示的模块。

采集信息:是对案件,违法人员,线索,协查通报,通缉令信息的录入修改。

查询: 分为组合查询,全文查询,自定义查询,快速查询,其中全文查询是将数据库中各个字段组合成一个或多个,类似

百度的搜索功能,它的缺点是不能与录入信息同步。

统计: 分为自由统计,和只是报表统计。

考核: 是对采集信息的合格率展现个用户。

系统设置:数据字典的维护,权限管理,

开发工具:MyEclipse 5.5、oracle 9i、IBM websphere 6.0、CVS。

采用技术:采用较稳定的Strtus架构模型、基于MVC2程序架构、采用了oracle 9i数据库管理系统。

项目技术:

1、系统分为表现层、控制层、业务逻辑层三层架构。

2、项目WEB层采用当前流行的MVC2模式,Struts框架(B/S),配合使用struts标签和HTML页面元素,使用AJAX技术实现异步

提交请求无刷新,及大量的javascript,dwr框架。

负责模块:证据库的实现,图片上传功能,线索,协查通报,通缉令,快速查询,组合查询,自定义查询,全文查询的维护

,其中自定义查询是按照原来的思路新的技术重新实现。

如何在JAVA中实现事务呢

事务一般都是与数据库操作相关的,直接使用JDBC的话,你可以通过设置是否自动commit,以及出异常后rollback来实现事务,如果你使用spring、hibernate等框架,它都会提供相应的事务配置。

java 两个项目之间如何实现事务管理?

可以去看看JTA事务 需要XA驱动

百度下atomikos这个,很多例子

不同数据源也可以回滚

搞错了,不同的项目不会弄,进程间通信的话才可以

如果是你有权限使用两个项目的数据库,整到一个项目,这样即使数据源(orcal,mysql等等)不同,可以用atomikos来管理事务,就可以回滚了。

什么是java中的spring事务传播

spring采用面向切面,你可以理解为将公用的代码 spring 帮你封装成一个整体,然后 在不同的程序中进行调用,开始调用这段代码的时候就叫切点

java异步处理数据时时数据还没存到库里

这是正常的,异步处理都是这有问题。特别是数据库开启事务的时候,上一个线程还没有提交的话,其他事务是看不到数据的。解决的办法就是要么采用同步的机制,在同一个线程中处理数据,自然就不会存在这种问题。如果一定要用异步的话,可以加入等待机制,就是判断数据是否入库,没有点话就等待一会儿,然后在判断,直到入库才进行后续的处理

关于java异步事务传递和java异步消息处理机制的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。