java - WLP 的 Microprofile 容错隔板实施未启动
问题描述
尝试在 Java HotSpot(TM) 64 位服务器 VM 版本 1.8.0_161-b12 (en_US) 上测试 WebSphere Liberty (WebSphere Application Server 18.0.0.3/wlp-1.0.22.cl180320180905-2337) 中的 Microprofile 容错,但是我无法启动舱壁逻辑。
创建了一个 REST 资源:
import org.eclipse.microprofile.faulttolerance.Bulkhead;
@Path("bulk")
public class BulkheadResource {
@GET
@Bulkhead(1)
public String getBulk() {
return getMessage();
}
private String getMessage() {
String vMessage = "Start: " + System.currentTimeMillis();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return vMessage;
}
}
并使用 3 个线程从 JMeter 调用它。我的期望是第一次调用会正常工作,但第二次和第三次调用会失败,因为调用一次占用了唯一的线程并且隔板会起作用。
相反,在 5 秒后,所有三个线程都返回了 200 响应:
timeStamp elapsed label responseCode threadName grpThreads
1539095137936 5057 GET Bulk 200 Micro Profile 1-1 3
1539095138272 5041 GET Bulk 200 Micro Profile 1-2 2
1539095138608 5029 GET Bulk 200 Micro Profile 1-3 1
服务器.xml:
<featureManager>
<feature>microProfile-2.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
有任何想法吗?
解决方案
断路器链接到实例。在您的示例中,您的 bean 是依赖范围的,并且每个请求都有自己的断路器。如果您更改为 ApplicationScoped,您应该会看到预期发生的情况。
推荐阅读
- python - Python:计算字符串开头的连续字符
- java-8 - 在 Java 8 中对复杂的解引用链进行空检查
- python - mysql.connector 系统错误问题:32 Broken Pipe
- sql - 相同的 SQL 查询适用于某些表,但在同一数据库中相同的其他表上出错
- google-apps-script - 我想在 Google Sheet 宏中使用 Autocrat
- javascript - 为 Lightbox 图像 ejs 动态显示图像
- java - 传递给方法的这个 Java 数组发生了什么?
- django - 将 api 密钥保存到数据库 django
- python-3.x - 如何解决 DataFrame 中的数据过滤挑战?
- java - 如何向导航抽屉项目添加操作?