You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 张锴 <zk...@gmail.com> on 2022/02/09 06:28:10 UTC

flink是否支持 http请求并返回json数据

业务需求:通过http请求方式将参数传给flink,将参数带入flink程序再把结果以json的形式返回。请问一下以这种方式实时计算,flink是否支持?

flink版本:1.12.1

回复: flink是否支持 http请求并返回json数据

Posted by yckkcy <ya...@163.com>.
你好,我想到一个异步方案,不知道是否能满足需求,可供参考:
1、接收端,我同意Caizhi Weng的说法,还是要另起一个http server服务a:把请求的参数放入消息队列中,同时服务a通知调用方请求已收到。
2、flink从消息队列中消费数据,并将参数进行解析,业务逻辑处理。
3、sink端可以考虑继承RichSinkFunction类,将解析结果再通过调用对方的http服务传回去,在invoke方法中post数据即可。

sink端可以参考这个代码
public class HttpResultSink extends RichSinkFunction {
   private CloseableHttpClient client;
   @Override
   public void open(Configuration parameters) throws Exception {
       client = HttpClients.createDefault();

   }

   @Override
   public void close() throws Exception {

       client.close();
   }

   @Override
   public void invoke(RequesResult requesResult, Context context)  {
       // 拼接请求
       HttpPost httpPost = new HttpPost("http://yourip:8088/open/api/pushInfo");
       // 拼接请求头与请求体
       String json = JSON.toJSONString(requesResult);
       httpPost.setHeader("Accept", "application/json");
       httpPost.setHeader("Content-type", "application/json; charset=UTF-8");
       httpPost.setEntity(entity);
       // 发送请求
       CloseableHttpResponse response = client.execute(httpPost);

   }
} 

如果直接用flink接受http请求,处理请求,再将请求结果同步返回,在一个作业中完成,我觉得难度比较大,这种同步方案不太适合flink处理,更适合spring技术栈做?
| |
杨成凯
|
|
yangchengkai2022@163.com
github:forrestlmj
|
在2022年2月9日 17:30,张锴<zk...@gmail.com> 写道:
我觉得这种方式是可行的,请问一下我应该如何去做,有没有一些资料参考一下呢

Caizhi Weng <ts...@gmail.com> 于2022年2月9日周三 16:15写道:

Hi!

Flink 目前没有 http server source / sink。这是一个 OLAP
的需求吗?从描述的需求来看,一种更加合理的方式应该是有一个专门的 http server 接受请求,调用 Flink API 运行一个 Flink
作业(Flink SQL 可以运行 select 语句),再将结果返回给调用方。

张锴 <zk...@gmail.com> 于2022年2月9日周三 14:28写道:



业务需求:通过http请求方式将参数传给flink,将参数带入flink程序再把结果以json的形式返回。请问一下以这种方式实时计算,flink是否支持?

flink版本:1.12.1



Re: flink是否支持 http请求并返回json数据

Posted by 张锴 <zk...@gmail.com>.
我觉得这种方式是可行的,请问一下我应该如何去做,有没有一些资料参考一下呢

Caizhi Weng <ts...@gmail.com> 于2022年2月9日周三 16:15写道:

> Hi!
>
> Flink 目前没有 http server source / sink。这是一个 OLAP
> 的需求吗?从描述的需求来看,一种更加合理的方式应该是有一个专门的 http server 接受请求,调用 Flink API 运行一个 Flink
> 作业(Flink SQL 可以运行 select 语句),再将结果返回给调用方。
>
> 张锴 <zk...@gmail.com> 于2022年2月9日周三 14:28写道:
>
> >
> >
> 业务需求:通过http请求方式将参数传给flink,将参数带入flink程序再把结果以json的形式返回。请问一下以这种方式实时计算,flink是否支持?
> >
> > flink版本:1.12.1
> >
>

Re: flink是否支持 http请求并返回json数据

Posted by Caizhi Weng <ts...@gmail.com>.
Hi!

Flink 目前没有 http server source / sink。这是一个 OLAP
的需求吗?从描述的需求来看,一种更加合理的方式应该是有一个专门的 http server 接受请求,调用 Flink API 运行一个 Flink
作业(Flink SQL 可以运行 select 语句),再将结果返回给调用方。

张锴 <zk...@gmail.com> 于2022年2月9日周三 14:28写道:

>
> 业务需求:通过http请求方式将参数传给flink,将参数带入flink程序再把结果以json的形式返回。请问一下以这种方式实时计算,flink是否支持?
>
> flink版本:1.12.1
>