====================
message-trunk是基于java开发的轻量级消息总线框架。
框架开发宗旨:项目内的轻量级消息队列。 框架开发目的:在项目内部,我们常常需要做异步操作,常规的做法是提交给线程池去做,这样会导致一些:
为了解决如上问题,基于redis的队列开发了该消息队列,具有如下特点:
maven依赖:
<!-- https://mvnrepository.com/artifact/wang.moshu/mt-framework -->
<dependency>
<groupId>wang.moshu</groupId>
<artifactId>mt-framework</artifactId>
<version>0.0.2</version>
</dependency>
运行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
message-trunk is available under the Apache license, see the LICENSE file for more information.
获取消息队列全局对象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);
消息处理器:继承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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。