如何提升消费者的速度,取决于消费者的逻辑,我给你这样的消费者逻辑:public void run() {
Thread.sleep(100000);
}你把框架折腾烂了都无法改善你消息堆积的情况
Thread.sleep(100000);
}你把框架折腾烂了都无法改善你消息堆积的情况
解决方案 »
- 用java程序实现 把mysql数据库中的数据每天更新到oracle数据库中
- 为什么不返回数据呢?(ibatis和sql server 2000)
- JNI中 C++调用Jframe时出现问题,求解
- asp 调用java的webservices
- 用户希望在多个新闻频道中发布的文章能够同时选择发布到热点新闻中显示,请给出在dotCMS上的实现步骤并给出相关的Velocity代码。
- myeclipse6.0整合struts1.2+spring2.0+hibernate3.1总是报错 求一个完整的代码(只要有crud一种就可以) 50分相送
- struts标签问题
- 大家帮忙看下:一个简单的Struts 错在哪里?
- 下载pdf格式文件时,浏览器总是自动将这个pdf文件打开.我想下载时弹出保存文件对话框.xdjm们有没有什么办法?
- struts2 + dwz框架 完成上传图片
- java项目里面的权限管理怎么做
- 为什么Java Web工程只能定制化?即只能是项目,不能是产品?
transactionTimeout
private CountDownLatch latch = new CountDownLatch(1); public Object await() throws InterruptedException {
latch.await();
return returnValue;
} public Object await(long timeout)
throws InterruptedException, TimeoutException {
boolean noTimeout = false;
noTimeout = latch.await(timeout, TimeUnit.MILLISECONDS);
if (noTimeout) {
return returnValue;
} else {
throw new TimeoutException("Response message timed out.");
}
} public void obtainRetunValue(Object value) {
returnValue = value;
latch.countDown();
}
}
发出调用请求后我就生成一个"MessageProbe"的实例,然后交给之前生成的消费者.
我的每一次调用都会有一个唯一标识,就是根据这个标识来区分消费.
Map<String, MessageProbe> registerPool =
new ConcurrentHashMap<String, MessageProbe>();一个简单的JDK5提供的Map实现,就能满足消费者持有这些"MessageProbe"实例的要求了.
接收到消息,查看自定义属性中的消息标识,根据这个标识找到"MessageProbe",然后调用"obtainRetunValue"方法为其注入消息.调用线程只需要阻塞在MessageProbe.awit()方法上即可.