- 浏览: 7330359 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在ActiveMQ中提供了文件数据库机制的数据库kahadb,也即基于文件形式的数据库,文件的中操作必须采用文件锁的机制,那么是怎么实现的呢?
原理如下:
readFile = new RandomAccessFile(file, "rw");
FileLock lock = readFile.getChannel().tryLock(0, readFile.getChannel().size(), false);
具体实现代码如下:
package org.apache.kahadb.util; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.channels.FileLock; import java.nio.channels.OverlappingFileLockException; import java.util.Date; /** * Used to lock a File. * * @author chirino */ public class LockFile { private static final boolean DISABLE_FILE_LOCK = "true".equals(System.getProperty("java.nio.channels.FileLock.broken", "false")); final private File file; private FileLock lock; private RandomAccessFile readFile; private int lockCounter; private final boolean deleteOnUnlock; public LockFile(File file, boolean deleteOnUnlock) { this.file = file; this.deleteOnUnlock = deleteOnUnlock; } /** * @throws IOException */ synchronized public void lock() throws IOException { if (DISABLE_FILE_LOCK) { return; } if( lockCounter>0 ) { return; } IOHelper.mkdirs(file.getParentFile()); if (System.getProperty(getVmLockKey()) != null) { throw new IOException("File '" + file + "' could not be locked as lock is already held for this jvm."); } if (lock == null) { readFile = new RandomAccessFile(file, "rw"); IOException reason = null; try { lock = readFile.getChannel().tryLock(0, readFile.getChannel().size(), false); } catch (OverlappingFileLockException e) { reason = IOExceptionSupport.create("File '" + file + "' could not be locked.",e); } catch (IOException ioe) { reason = ioe; } if (lock != null) { lockCounter++; System.setProperty(getVmLockKey(), new Date().toString()); } else { // new read file for next attempt closeReadFile(); if (reason != null) { throw reason; } throw new IOException("File '" + file + "' could not be locked."); } } } /** */ public void unlock() { if (DISABLE_FILE_LOCK) { return; } lockCounter--; if( lockCounter!=0 ) { return; } // release the lock.. if (lock != null) { try { lock.release(); System.getProperties().remove(getVmLockKey()); } catch (Throwable ignore) { } lock = null; } closeReadFile(); if( deleteOnUnlock ) { file.delete(); } } private String getVmLockKey() throws IOException { return getClass().getName() + ".lock." + file.getCanonicalPath(); } private void closeReadFile() { // close the file. if (readFile != null) { try { readFile.close(); } catch (Throwable ignore) { } readFile = null; } } }
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6601ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3500在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2900在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 47011. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4093我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2920在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5525在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2667在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5585在ActiveMQ中的activemq.b ... -
ActiveMQ 和Commons-Daemon整合
2011-07-07 20:13 2939在一般的java项目中,如果在linu ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6067无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5120在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2210在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10223在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2306ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2656在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ和Tomcat的整合应用
2011-06-30 17:00 11209在ActiveMQ的资源让容器Tomcat管理时 ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6176最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25098配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ的JMX监控使用
2011-06-10 17:26 13152package easyway.app.activemq.d ...
相关推荐
在Linux系统上部署和使用Apache ActiveMQ能够提供稳定、高效的消息传递服务,支持分布式系统中的异步通信和解耦。 Apache ActiveMQ的主要功能包括: 1. **消息队列**: 它允许应用程序将消息放入队列中,由其他应用...
10. **故障排查**:学习如何通过日志、监控指标和调试工具解决ActiveMQ运行过程中遇到的问题。 通过以上这些知识点,你将能够更好地理解和使用Apache ActiveMQ,构建出高效、可靠的分布式系统。不过,这只是冰山...
同时,Spring配置文件(如applicationContext.xml)中会包含关于ActiveMQ和Zookeeper的连接信息,以及如何在应用程序中创建JMS模板或监听器的相关设置。 为了深入了解这个测试代码的工作原理,你需要熟悉以下概念:...
由于ActiveMQ使用数据库锁机制确定哪个节点是Master,所以先启动的节点将成为Master。 6. 验证集群配置:可以通过发送消息到Master Broker并观察消息是否被正确复制到Slave Broker。可以使用ActiveMQ的管理控制台或...
- **错误处理**:启动过程中可能会遇到“activemqLevelDBIOExceptionhandler”错误,解决方法是在每个ActiveMQ节点下删除pax-url-aether-1.5.2.jar包,并注释掉activemq.xml中的相关日志配置。 ##### 3. 集群特性 ...
如果Master宕机,文件锁被释放,Slave获取锁并成为新的Master。这种方式无需修改配置文件,但需要一个分布式文件系统,可能增加在线升级的复杂性。 3. Share Database Master/Slave:类似上一种,但使用数据库锁...
在本文档中,我们关注的是ActiveMQ的Master-Slave集群配置,这是实现高可用性和容错机制的一种重要方式。 Master-Slave架构的核心思想是通过将消息复制到备用的Slave Broker,确保即使主Master Broker发生故障,...
通过这些资源,你可以深入理解Redis的数据结构和操作命令,掌握JVM的内存管理与调优,了解ActiveMQ的消息传递机制,以及利用JUC构建高并发应用的技巧。同时,脑图的形式使得学习过程更为直观和高效。
通过阅读content.json、metadata.json、manifest.json、content.xml等文件,可以进一步获取详细的学习资源和路径规划,Thumbnails可能包含了课程或者教程的预览图,帮助学习者更好地理解内容结构。在学习过程中,...
- **缓存机制**:高速缓存允许ActiveMQ在写入数据库之前先将消息存储在内存中,提高性能。`<journalPersistenceAdapterFactory>`用于配置这种缓存策略。 - **配置变更**:在`<persistenceFactory>`标签内,设置`...
理解通信协议传输过程中的序列化和反序列化机制 基于框架的RPC通信技术 WebService/ApacheCXF RMI/Spring RMI Hession 传统RPC技术在大型分布式架构下面临的问题 分布式架构下的RPC解决方案 Zookeeper ...
在“zheng”这个压缩包文件中,可能包含了项目的源代码、配置文件、文档和其他相关资源。你可以通过查看这些文件来了解项目的具体实现细节,例如服务的接口定义、数据库配置、日志记录等。此外,你可能还需要对项目...
9. **性能调优**:学习如何优化MQ客户端的性能,包括批量发送、消息确认机制和连接池的使用。 10. **测试和调试**:了解如何编写单元测试和集成测试,确保MQ操作的正确性,以及如何利用调试工具定位和解决问题。 ...
这份名为"面试资源_java面试资源_"的压缩包文件,显然是一份专为Java Web开发者准备的面试指南,涵盖了多个核心主题,包括分布式事务、分布式锁、Redis面试题、消息队列以及MyBatis的相关知识。以下是对这些主题的...
在提供的"blockingQuence"文件中,可能包含关于阻塞队列(BlockingQueue)的内容。阻塞队列是Java并发包`java.util.concurrent`中的一个数据结构,它结合了队列和锁的概念,常用于构建高效的消息传递机制。在生产者-...
本压缩包文件"微服务架构面试题系列:Dubbo+Spring Boot+Spring Cloud.zip"包含了关于微服务领域的一系列面试题目,主要涉及了Dubbo、Spring Boot、Spring Cloud等关键技术和工具。接下来,我们将深入探讨这些技术...
- JVM(Java虚拟机):涵盖了内存模型、对象头、垃圾回收机制、锁机制等。 - 数据结构:重点讲解字符串、数组、链表以及集合的原理和区别。 - 数据库与SQL优化:包含MySQL索引、SQL优化、分库分表的原理和策略。 ...
10. **Java并发与多线程**:深入讨论Java的并发模型,线程安全与锁机制。 11. **JTA与事务管理**:讲解分布式事务处理,确保数据一致性。 12. **容器与部署**:如Tomcat、Jetty等应用服务器的使用,以及应用部署与...
乐观锁和悲观锁是两种不同的锁机制,乐观锁假设数据更新时冲突较少,通常采用CAS(Compare-And-Swap)机制。悲观锁假设冲突较多,需要先上锁再操作,以保证数据的一致性。 消息队列:消息队列是分布式系统中常用的...