高性能消息队列Disruptor
定义一个事件模型
之后创建一个java类来使用这个数据模型。
/*
<h1>事件模型工程类,用于生产事件消息</h1>
*/
no usages
public class EventMessageFactory implements EventFactory<EventMessage> {
@Overridepublic EventMessage newInstance(){
return new EventMessage();
}
之后需要定义一个异常处理类,如果发出的消息出现了异常使用这个异常处理类进行处理。
no usages
@Slf4j
public class EventMessageExceptionHandler implements ExceptionHandler<EventMessage> {
no usages
@Override
public void handleEventException(Throwable ex,long sequencer EventMessage event){
}
3 usages
@Override
public void handleOnStartException(Throwable ex){
}
4 usages
@Override
public void handle0nShutdownException(Throwable ex){}
}
第一个方法是处理事件时出现的异常。
第二个方法是处理消费线程之前出现的异常。
第三个方法是处理消费线程结束之前出现的异常。
之后定义一个消费者,也就是消息处理器。
在这个方法的外面定义一个header的名称
第一给方法是独立的消费者也就是处理每一个消费者的所有信息
第二个方法是公告消费者,不会处理重复的信息。
之后定义一个工具类
第一个方法是初始化的方法
第二个方法是销毁之前需要执行的销毁方法
之后定义一个事件转换器
这个sequence可以看成是消息序号
之后定义一个disruptor,初始化放在第一个方法上面,然后定义一个ringBuffer,和一个消息工厂类。
然后定一个方法用于生产者发布消息
然后时消费者处理消息
之后对初始化方法进行修改。
这里面第一个参数是给消息分配空间
第二个参数是容器的大小
第三个是线程工厂的实现类
第四个是生产者的类型
最后一个参数是消息等待策略
然后对二个方法进行修改
之后定义一个新的class类来实现EventMessageDisruptor,并在里面进行实现消费者。
在定义另一消费者类型的class。
然后来实现这两个消费者。