如何提升消费者的速度,取决于消费者的逻辑,我给你这样的消费者逻辑:public void run() {
Thread.sleep(100000);
}你把框架折腾烂了都无法改善你消息堆积的情况
Thread.sleep(100000);
}你把框架折腾烂了都无法改善你消息堆积的情况
解决方案 »
- spring+JTA 多数据源配置问题
- jsp页面向struts2的action传集合值的问题
- Struts2 和 Spring 、Hibernate 集成 错误
- struts2 如何实现页面一打开就触发action
- 如何部署服务器?
- 奇怪了???
- 谁有Struts+Spring+Hibernate的HelloWorld例子
- 晕死: 怎么会有这样的错误提示呢???
- 请问在哪能下载java的源代码包 src.zip
- 招聘经验丰富Java兼职教师!北京 70元-100元/小时 mail:[email protected]
- 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()方法上即可.