[
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)