月归档:2014年12月

RocketMQ学习(一):简介和QuickStart

RocketMQ是什么? 引用官方描述: RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点: 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式特性 同时支持Push与Pull方式消费消息 历经多次天猫双十一海量消息考验 RocketMQ是纯java编写,基于通信框架Netty。 代码地址:https://github.com/alibaba/RocketMQ,目前分支是3.2.2 develop。 下载完代码后,将各个模块导入eclipse,本地尝试启动看看。 1.启动nameServer,运行rocketmq-namesrv的NamesrvStartup,运行之前需设置环境变量ROCKETMQ_HOME为RocketMQ项目的根目录,这样有一个作用是,指向logback的配置文件路径,保证在nameServer启动时,logback的正常初始化。我本机设置的是:ROCKETMQ_HOME=C:\Users\Administrator\git\RocketMQ。 The Name Server boot success. 表示启动成功。 2.启动brokerServer,运行rocketmq-broker的BrokerStartup,同样,运行之前需设置环境变量ROCKETMQ_HOME,然后启动参数需要带上【-n “192.168.0.109:9876″】,我本机的ip是192.168.0.109。如果不带-n的参数,那么broker会去访问http://jmenv.tbsite.net:8080/rocketmq/nsaddr获取nameServer的地址,这个地址不是我们自己的nameServer。 The broker[LENOVO-PC, 192.168.0.109:10911] boot success. and name server is 192.168.0.109:9876表示成功。 3.这个非必选项,不运行也可以。还可以启动rocketmq-srvutil的FiltersrvStartup,这是Consumer使用Java代码,在服务器做消息过滤。启动方式和broker一样,具体的过滤原理以后再详细的说。 到此就可以运行demo了。

发表在 编程语言 | 标签为 , | Comments Off on RocketMQ学习(一):简介和QuickStart

log4j几个tips

log4j是很常用的日志框架,这里总结几个小知识点: 1. logger是以名称为key,logger为value的形式存储在Hashtable里,所以,logger作为入参不需要传入引用,直接输入名称get即可。 LogFactoryImpl.java 2. logger的继承关系是根据名称的“.”分割来区分,表现为子logger打印日志时遍历父logger里的appender的进行日志打印。 Category.java 3.定义模块名为常量,按模块名称取logger,解决项目里包名类名相同日志无法区分问题。 贴代码: 示例一 示例二 练习代码看这里

发表在 编程语言 | 标签为 , | Comments Off on log4j几个tips

classloader隔离练习

平时,我们用maven来管理项目的依赖包,可是有时候还是会出现jar包多版本同时存在的问题,这时,我们可以利用classloader的隔离机制来解决。 1.我们自定义classloader,然后设置它为应用的contextClassLoader运行。 2.自定义classLoader加载特定目录的jar包,同时把加载过的Class缓存起来,这时classLoader就起到隔离作用,像一个容器,只装自己的jar包。 3.Class的查找机制,如果自定义classLoader里加载过,取出来直接返回,没有则用父classLoader查找加载。 4.自定义classLoader加载自己指定目录的jar包,父classLoader则加载classpath里的包或者类。 可能说的比较简洁,大家感兴趣还是直接看代码吧。 练习代码看这里

发表在 编程语言 | 标签为 | Comments Off on classloader隔离练习