在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:message-trunk开源软件地址:https://gitee.com/1028125449/message-trunk开源软件介绍:message-trunk====================
框架开发宗旨:项目内的轻量级消息队列。框架开发目的:在项目内部,我们常常需要做异步操作,常规的做法是提交给线程池去做,这样会导致一些:
为了解决如上问题,基于redis的队列开发了该消息队列,具有如下特点:
Installationmaven依赖: <!-- https://mvnrepository.com/artifact/wang.moshu/mt-framework --><dependency> <groupId>wang.moshu</groupId> <artifactId>mt-framework</artifactId> <version>0.0.2</version></dependency> DEMO运行mt-demo,打开index.jsp运行测试例子。演示地址:简单测试:http://123.206.202.189:8080/mt-demo/index.jsp性能测试(1核1G小机器,亲请别测试性能,已经被玩挂N次了,下载到机器上测试性能哦):http://localhost:8080/mt-demo/index-benchmark.jsp Requirements
Licensemessage-trunk is available under the Apache license, see the LICENSE file for more information. 使用指南1.消息入队列获取消息队列全局对象MessageTrunk(可以用spring注入),put入消息即可。 // 获取MessageTrunk实例 MessageTrunk mt = (MessageTrunk) SpringBeanUtils.getBean("messageTrunk"); Message<DemoMessage> message = new Message<DemoMessage>(MessageType.DEMO_MESSAGE, new DemoMessage(value)); // 消息入MT mt.put(message); 2. 处理消息消息处理器:继承AbstarctMessageHandler抽象类。 public class DemoHandler extends AbstarctMessageHandler<DemoMessage>{ private static Log logger = LogFactory.getLog(DemoHandler.class); public DemoHandler() { // 说明该handler监控的消息类型 super(MessageType.DEMO_MESSAGE); } /** * 监听到消息后处理方法 */ @Override public void handle(DemoMessage message) { // do handle } @Override public void handleFailed(DemoMessage obj) { // handle failed }} 实现原理基本原理是redis的阻塞取命令: Blpop,该命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 性能测试(测试链接)测试环境:本人开发机器,4核i5,16GB内存,tomcat和redis在同一台机器测试结果:最高写入消息速度为57208 ops |
请发表评论