根据Apache apisix官方文档,目前已经支持通过Java插件运行器在Apache apisix中运行Java插件。Java插件运行器已经在生产环境中得到了广泛应用,并且在持续改进和更新中。
在使用Java插件运行器时,需要按照以下步骤进行操作:
plugins:
enable: true
dir: ${APISIX_HOME}/plugins
max_filter_num: 20
lua_plugin_server_names:
- http
java_plugin_server_names:
- http
- grpc
java_plugin_runner:
worker_num: 1
timeout: 2000
script: ${APISIX_HOME}/plugins/java-runner/bin/runner.sh
classpath:
- ${APISIX_HOME}/plugins/java-runner/lib/*
- ${APISIX_HOME}/plugins/java-runner/plugin/*
创建Java插件,并编译为jar包。
将编译后的jar包放置在${APISIX_HOME}/plugins/java-runner/plugin/
目录下。
通过Java注解声明插件实现类,示例代码如下:
package org.apache.apisix.plugin.demo;
import org.apache.apisix.plugin.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ApiProvider(clusterName = "apisix", tag = "1.0", upstreamTimeout = 2000)
public class DemoPlugin {
private static final Logger logger = LoggerFactory.getLogger(DemoPlugin.class);
@Api(value = "/hello", upstream = "http://httpbin.org/get", desc = "demo hello")
public ApiResponse hello(ApiRequest request) {
logger.info("request: {}", request);
return new ApiResponse(200, "hello");
}
}
参考链接:https://github.com/apache/apisix-java-plugin-runner#the-basic-usage-of-java-plugins-in-apisix