- 浏览: 156685 次
- 性别:
- 来自: 大连
最新评论
-
eclipseakwolf:
很棒的文章
Shiro User Manual-Authentication -
xugangqiang:
very good
Java Concurrent Programming (1) -
jlcon:
是不是AbstractShiroTest还需要继承EasyMo ...
Shiro User Manual-Testing -
jlcon:
createNiceMock这个EasyMockSupport ...
Shiro User Manual-Testing -
Technoboy:
53873039oycg 写道楼主:问下,你的那个dao接口的 ...
Shiro Example
文章列表
1. 介绍
Disconf是一套完整的基于zookeeper的分布式配置统一解决方案。它支持配置(配置项+配置文件)的分布式化管理。
2. 安装
依赖Mysql, Tomcat, Nginx, Zookeeeper, Redis。
路径配置:
将你的配置文件放到此地址目录下(以下地址可自行设定):
/home/work/dsp/disconf-rd/online-resources
如果不确定如何配置,可以拷贝/disconf-web/profile/rd/目录下的文件,拷贝过去后,依次修改配置文件内容即可。配置文件包括:
jdbc-mysql.propert ...
1. 简介
Producer发送一条消息到broker后,如何存储到commitlog文件,又是如何构建的consumequeue,index文件,将从源码的角度剖析。
2. SendMessageProcessor
该类是负责响应Producer发消息到broker的入口处理逻辑类。其processRequest响应两种请求:
CONSUMER_SEND_MSG_BACK: consumer消费失败的消息发回broker。
default: producer发消息到broker。
由default,进入sendMessage方法,首先,我们看到对opaque的操作,表示透传 ...
1. 介绍
Consumer默认使用DefaultMQPushConsumerImpl长轮询拉消息的方式来消费,可以保证实时性同Push一样。还可以参考example项目,使用DefaultMQPullConsumerImpl,由业务控制如果拉消息,更新消费进度等方式。
2. 集群模式VS广播模式
集群模式:
消息的消费进度,即consumerOffset.json保存在broker上。
所有consumer平均消费topic的消息。
消息消费失败后,consumer会发回broker,broker根据消费失败次数设置不同的delayLevel进行重发。
相同topic不同的con ...
1.启动
producer通过配置的namesrv列表,启动时随机选择一个进行相连。首先引出,设置namesrv的几种方式,优先级依次由高到低:
第一种:代码中指定namesrv地址
producer.setNamesrvAddr(namesrvAddr);
consumer.setNamesrvAddr(namesrvAddr);
第二种:Java启动参数中指定:
-Drocketmq.namesrv.addr=192.168.0.1:9876
第三种:环境变量
NAMESRV_ADDR
第四种为http方式获取。
如果启动 ...
1. 介绍
当broker为slave且有master的情况下,通过HAService,slave从master同步commitlog数据,并通过ReputMessageService异步构建consumequeue。通过SlaveSynchronize定时每分钟从master同步config目录下的四个文件。默认,master监听broker端口+1。
2. 启动
slave可以通过配置指定master地址,也可以从namesrv获取master地址。broker启动,在BrokerController#initialize方法:
if (BrokerRole.SLAVE == ...
1. 部署方式
Broker可部署为2m-2s-async, 2m-2s-sync, 2m-noslave。推荐的部署方式为1.
2. 文件结构
abort:broker启动后会创建此空文件,当正常关闭broker后,将其删除。该文件的作用是,当broker启动后检测到该文件存在,说明上次 ...
1. 介绍
Namesrv的功能,就相当于RPC中的注册中心。对于MQ而言,broker启动,将自身创建的topic等信息注册到Namesrv上。consumer和producer需要配置namesrv的地址,启动后,首先和namesrv建立长连接,并获取相应的topic信息(比如,哪些broker有topic路由信息),然后再和broker建立长连接。Namesrv本身无状态,可集群部署。所有的注册信息,都保存在namesrv的类似map内存数据结构中。
2. 启动
Namesrv启动后,首先会加载KVConfig服务,然后监听本地端口(默认9876),等待客户端连接,并定时 ...
1. 下载
https://github.com/alibaba/RocketMQ.git
下载后,运行install.sh或install.bat会在target目录下产生alibaba-rocketmq-broker.tar.gz(如果编译过程出现checkstyle不通过,注释掉pom文件的checkstyle plugin),然后解压复制到相应目录。
2. 启动
到MQ的bin/目录:
namesrv:nohup sh mqnamesrv >> /opt/ns.log &
broker:nohup sh mqbroker -c ../con ...
1. 介绍
索引文件指,发送一条消息后,MQ通过(topic和uniqKey)或(topic和keys)构建的索引,然后通过queryMsgByKey可以查询到结果。注意,通过queryMsgById的查询,不是索引查询。索引文件存在于/store/index/文件夹下,以时间戳命名,如20151209213520685。每个索引文件,默认存储2000w条数据,文件大小默认为420000040字节。索引文件由头信息,槽位,内容组成。
2. 组成
头信息包含6个字段,分别为:
beginTimestamp:long型,第一条消息的存储时间。
endTimestamp:long型, 最 ...
1. Overview
对于web应用,Shiro提供了认证和授权的过滤器实现。
2. Architecture
a. ServletContextSupport
提供了对ServletContext访问的支持。
b. AbstractFilter
提供了对过滤器初始化的配置。如果想在过滤器初始化时添加逻辑,可通过覆 ...
1. Overview
为了降低使用Quartz的难度,并能以Spring风格的方式使用Quartz,Spring为Quartz提供了Scheduler, Trigger, JobDetail的FactoryBean类,以及一些工具类,使Quartz能很好的注入容器,并可以结合Spring容器的生命周期,启动和关闭job。
2. JobDetailBean
使用JobDetailBean,需要设置其JobClass属性,指定实现了Job接口的实现类。JobDetailBean默认使用bean名作为job名,DEFAULT作为组名,并可以通过applicationContextJobDa ...
7 JobStore
Quartz 为所有类型的 Job 存储提供了一个接口。这个接口位于 org.quartz.spi 包中,叫做 JobStore。JobStore 用于对 Job、Trigger、Calendar、Listener和 Scheduler 状态进行存储。Quartz使用者通常不用直接访问JobStore接口的方法,它们在运 ...
1 Overview
Quartz是一个开源的作业调度框架,可被集成到任何的Java EE 或者Java SE程序中。
2 Scheduler
通过SchedulerFactory接口创建Scheduler对象。当 Scheduler 实例被创建之后,就会被保存到一个仓库中(org.quartz.impl.SchedulerRepository)。Scheduler对象可以被start、standby和shutdown。一旦Scheduler被shutdown,那么不应该重新启动它。Scheduler对象被启动后,Triggers才会被触发。在Trigger被触发时,Schedule ...
1. 说明:
maven项目,基于Spring3.1,MyBatis3.1,Shiro1.1,EHCache2.2。
项目的sql目录下的init_schema.sql文件为数据库脚本,例子中使用SQLServer。如果使用MySQL,只需将pom.xml中的MySQL依赖打开,然后修改db.properties文件,将配置改为MySQL即可。如果你不想使用数据库,将main_config.properties中的mockUserServiceFlag设置为true,应用就会使用MockUserServiceImpl类作为授权和验证的实现。对于第二个例子,添加了过滤器链,并使用EHCac ...
Apache Shiro用户手册中文版。