当前位置: 首页 > article >正文

高性能消息队列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。

然后来实现这两个消费者。


http://www.kler.cn/a/528397.html

相关文章:

  • 【后端开发】字节跳动青训营Cloudwego脚手架
  • 【C++ 数学 括号匹配】2116. 判断一个括号字符串是否有效|2037
  • DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?
  • 【MyDB】4-VersionManager 之 3-死锁及超时检测
  • IO进程线程复习
  • 【C++高并发服务器WebServer】-9:多线程开发
  • 使用 Spring JDBC 进行数据库操作:深入解析 JdbcTemplate
  • dfs枚举问题
  • 【深度学习】softmax回归的从零开始实现
  • 想学习JAVA编程,请问应该如何去学习?
  • 深度学习之“线性代数”
  • DeepSeek超越ChatGPT的能力及部分核心原理
  • 算法【多重背包】
  • 【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)
  • 记7(激活函数+多层神经网络+梯度下降法及其优化
  • Unity3D仿星露谷物语开发26之创建场景控制管理器
  • 蓝桥杯刷题DAY1:前缀和
  • 项目练习:重写若依后端报错cannot be cast to com.xxx.model.LoginUser
  • C++ Primer 自定义数据结构
  • Linux-CentOS的yum源
  • 阶段一Python核心编程:走进Python编程的世界001
  • nth_element函数——C++快速选择函数
  • C语言:数组的介绍与使用
  • Excel 技巧23 - 在Excel中用切片器做出查询效果(★★★)
  • 4 [危机13小时追踪一场GitHub投毒事件]
  • javaEE-6.网络原理-http