首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将队列中的消息提供给具有延迟的消费者:Weblogic

将队列中的消息提供给具有延迟的消费者:Weblogic
EN

Stack Overflow用户
提问于 2013-10-09 16:50:04
回答 2查看 1.3K关注 0票数 0

我可以找到在生产者的供应和消费者的消费之间造成延迟的方法。

但我想知道是否有任何可能的方法在每个message.Say上造成延迟,我希望我的消费者每2秒只挑选一条消息,但我希望我的生产者以其最佳性能速度生产,因为我的消费者没有生产者效率高。那么,有没有一种方法可以在消息从队列发送到消费者之前控制其延迟呢?

我在producer上试用了weblogic.jms.extensions.WLMessageProducer producer = (weblogic.jms.extensions.WLMessageProducer)queueSender;

代码语言:javascript
运行
复制
`weblogic.jms.extensions.WLMessage message=(weblogic.jms.extensions.WLMessage)tMessage;
 message.setJMSDeliveryTime(20000);` 

onmessage,但看不到任何区别。

EN

回答 2

Stack Overflow用户

发布于 2013-10-10 01:43:09

您可能需要:

代码语言:javascript
运行
复制
((weblogic.jms.extensions.WLMessageProducer)producer).setTimeToDeliver(2000);

http://docs.oracle.com/cd/E15051_01/wls/docs103/javadocs/weblogic/jms/extensions/WLMessageProducer.html#setTimeToDeliver(long)

我不确定你的第一次尝试应该做什么。但是从WebLogic9开始,setJMSDeliveryTime就被弃用了。

票数 1
EN

Stack Overflow用户

发布于 2013-10-10 23:25:49

你的问题有一点矛盾,因为“消费者每2秒只挑选一条消息”与“在消息从队列发送到消费者之前控制每条消息的延迟”不是一回事。例如,如果你的生产者以10,000/小时的速度发送消息,如果你为每条消息设置30分钟的交易,如果可能的话,你的消费者仍然会尝试以10,000/小时的速度消费。延迟的唯一影响是消费者直到生产商开始注射后30分钟才开始消费。

假设前者是您想要做的,那么我相信在WebLogic中唯一的选择就是在您的消费者代码中实现一些东西来减慢这一端的处理速度。

在队列设置中将Time设置为Deliver Override会延迟每条消息,但不会更改速率。您也可以在生产者的代码中将Time设置为Deliver,但WebLogic队列设置将在前面(override!)如果还设置了。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19267193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档