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