[ 
https://issues.apache.org/jira/browse/FLINK-23296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tzu-Li (Gordon) Tai closed FLINK-23296.
---------------------------------------
    Resolution: Fixed

flink-statefun/master: 1589e03440b33c2cf785172017111cfb91762c3f

> 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
>            Priority: Major
>             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