Tzu-Li (Gordon) Tai created FLINK-23296:
-------------------------------------------

             Summary: Add RequestReplyClientFactory as a pluggable extension
                 Key: FLINK-23296
                 URL: https://issues.apache.org/jira/browse/FLINK-23296
             Project: Flink
          Issue Type: Sub-task
          Components: Stateful Functions
            Reporter: Tzu-Li (Gordon) Tai
            Assignee: Tzu-Li (Gordon) Tai
             Fix For: statefun-3.1.0


Currently, we ship and always use by default a {{RequestReplyClient}} 
implementation based on OkHttp. We'd like to allow users to use their own 
implementations of the {{RequestReplyClient}} for remote invocations. This is 
strictly for extending the means of transport, and should not leave room to 
touch the invocation protocol.

The way this would look like in the module YAML files for remote modules would 
be:

{code}
module:
    spec:
        endpoints:
            - endpoint:
                   meta:
                       kind: http
                   spec:
                       functions: com.foo.bar/*
                       urlPathTemplate: 
http://bar.foo.com:8080/functions/{function.name}
                       transport:
                           extension: com.foo.bar/some.custom.client
                           prop1: foobar
                           prop2:
                               - k: v
                               - k2: v2
                           ....
{code}

The important part is the transport section. If not specified, then the default 
OkHttp implementation will be used. Otherwise, if specified, an extension with 
the specified typename must be bound and exist in the application, and that 
extension needs to be a {{RequestReplyClientFactory}}:

{code}
interface RequestReplyClientFactory {
    RequestReplyClient create(JSONNode properties, URI endpointUrl);
}
{code}

The provided JSON node properties will be as is provided in the {{transport}} 
block of the module YAML endpoint specification.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to