You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apisix.apache.org by tzssangglass <tz...@apache.org> on 2021/12/15 07:34:49 UTC
[DISCUSS]: change the framework for apisix-java-plugin-runner
Hi folks,
I'm implementing a new feature of apisix-java-plugin-runner[1]. I am
having some problems.
Now apisix-java-plugin-runner is based on reactor-netty[2] framework
to implement Unix Domain Socket communication with APISIX.
The role of apisix-java-plugin-runner is server-side and the role of
APISIX is client-side. They worked well before.
The problem I encountered while implementing the new feature is as follows:
1. request A enters apisix-java-plugin-runner and when processing
request A, create request B to APISIX
2. get the response of request B from APISIX
3. continue processing request A, and retuen response to APISIX
I have tried to implement step 1 and 2, but step3 is difficult and I
can't interrupt processing request A due to the limitation of
reactor-netty framework.
I also tried to contact the developers of reactor-netty and they
suggested me to choose a new framework[3].
I've done some research and the current optional implementations are
1. rsocket-java: https://github.com/rsocket/rsocket-java
2. native Unix Domain Socket support based on JDK16:
https://openjdk.java.net/jeps/380
3. junixsocket: https://github.com/kohlschutter/junixsocket
At this stage I prefer to use the Unix Domain Socket support native to JDK16.
I'm doing a POC on these frameworks.
I hope to get your guidance.
[1]https://github.com/apache/apisix-java-plugin-runner
[2]https://github.com/reactor/reactor-netty
[3]https://github.com/reactor/reactor-netty/issues/1916
*ZhengSong Tu*
My GitHub: https://github.com/tzssangglass
Apache APISIX: https://github.com/apache/apisix
Re: [DISCUSS]: change the framework for apisix-java-plugin-runner
Posted by tzssangglass <tz...@apache.org>.
After investigating the above three frameworks, none of them could fit
my needs, then I tried netty and implemented my needs on netty.
Now I am going to switch the framework of apisix-java-plugin-runner
from reactor-netty to netty.
I will be submitting a PR for review soon.
I would like to hear your suggestions.
*ZhengSong Tu*
My GitHub: https://github.com/tzssangglass
Apache APISIX: https://github.com/apache/apisix
tzssangglass <tz...@apache.org> 于2021年12月15日周三 15:34写道:
>
> Hi folks,
>
> I'm implementing a new feature of apisix-java-plugin-runner[1]. I am
> having some problems.
>
> Now apisix-java-plugin-runner is based on reactor-netty[2] framework
> to implement Unix Domain Socket communication with APISIX.
>
> The role of apisix-java-plugin-runner is server-side and the role of
> APISIX is client-side. They worked well before.
>
> The problem I encountered while implementing the new feature is as follows:
>
> 1. request A enters apisix-java-plugin-runner and when processing
> request A, create request B to APISIX
> 2. get the response of request B from APISIX
> 3. continue processing request A, and retuen response to APISIX
>
> I have tried to implement step 1 and 2, but step3 is difficult and I
> can't interrupt processing request A due to the limitation of
> reactor-netty framework.
>
> I also tried to contact the developers of reactor-netty and they
> suggested me to choose a new framework[3].
>
> I've done some research and the current optional implementations are
>
> 1. rsocket-java: https://github.com/rsocket/rsocket-java
> 2. native Unix Domain Socket support based on JDK16:
> https://openjdk.java.net/jeps/380
> 3. junixsocket: https://github.com/kohlschutter/junixsocket
>
> At this stage I prefer to use the Unix Domain Socket support native to JDK16.
>
> I'm doing a POC on these frameworks.
>
> I hope to get your guidance.
>
> [1]https://github.com/apache/apisix-java-plugin-runner
> [2]https://github.com/reactor/reactor-netty
> [3]https://github.com/reactor/reactor-netty/issues/1916
>
>
>
> *ZhengSong Tu*
> My GitHub: https://github.com/tzssangglass
> Apache APISIX: https://github.com/apache/apisix