WSO2 ESB - 进行序列等待/暂停

时间:2014-02-10 16:32:03

标签: multithreading wso2 wso2esb

我有一个用例,我需要一个序列在它继续之前等待一段时间。基本上它是一个“Thread.Sleep(x)”,但这意味着线程不可用于线程池。这可能会对高负载系统产生影响。所以我有两个问题:

1)实现此用例的最佳方法是什么?
2)使用Thread.Sleep对WSO有多大的负担?

也欢迎使用替代解决方案,例如使用主题和内容:)

希望你们能帮忙!

回答回复中的问题: 我们正在向外部系统和离线数据存储(ODS; WSO2的DSS组件)发送请求。外部系统先行,但当它在一秒钟内没有返回时,我们希望ODS回应请求。

替代路径:
- ODS处于离线状态,在这种情况下,系统必须等待外部系统更长时间;
- 外部系统在一段时间后返回,虽然ODS结果已发送给请求者,但我们仍希望外部系统的响应更新我们的ODS。

我们目前正在调查克隆和聚合器。

1 个答案:

答案 0 :(得分:0)

当您说Thread.sleep()时,我想到的第一件事就是使用Class Mediator。这将是编写自定义逻辑和添加睡眠的简单方法。

Writing your own Custom Mediation in Java”的示例将帮助您了解编写类介体的步骤。

您需要将包含自定义中介类的Jar复制到repository/components/lib/

在中介逻辑中使用线程休眠时,请求将在指定的时间段内挂起。

这可能会影响您的表现。但是你应该能够tune the parameters满足你的需求。

这完全取决于您的要求。