Flink httpclient sink

本文介绍如何使用Flink实现HTTP Sink,将实时计算结果发送到HTTP服务。通过具体代码示例展示了如何配置HTTP客户端、构建请求并获取响应。

前几天,发愁怎么样把flink实时计算的结果展示到UI上,所以就有了我接下来研究的 flink httpsink

依赖:

   <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.5</version>
        </dependency>

代码:

public class HttpSink implements SinkFunction<SdkLampStatusDto> {



    @Override
    public void invoke(SdkLampStatusDto data, Context context) throws Exception {
        CloseableHttpClient client = HttpClients.createDefault();
        URIBuilder uriBuilder = new URIBuilder("http://localhost:8080/doGetControllerTwo?crossId="+data.getCrossId() + "&phaseNo="+data.getPhaseNo() +"&lampStatus="+data.getLampStatus() + "&lastSecond="+data.getLastSecond());

        HttpPost httpPost = new HttpPost();
        HttpGet httpGet = new HttpGet(uriBuilder.build());
        httpGet.addHeader
### 关于Sink的概念 在信息技术和编程领域中,“sink”通常指代数据流中的接收端或目标位置。它是一个用于存储、处理或者转发数据的组件,在多种技术栈中有不同的表现形式。 #### 数据管道中的Sink 在一个典型的数据管道架构中,例如Apache Flume[^4],sink表示的是最终写入的目标系统。它可以是文件系统(如HDFS)、数据库(如MySQL、PostgreSQL),或者是其他服务(如Kafka)。Flume通过其拦截器(Interceptors)对数据进行预处理后再传递给sink完成持久化操作。 #### 编程语境下的Sink定义 更广泛地说,在程序设计模式里,“sink”可以被理解成任何接受输入并执行某种动作的对象或函数。比如标准输出设备stdout就是一个常见的例子;当提到日志记录时,则可能涉及将消息发送到特定的日志收集工具作为“log sink”。 以下是使用Python创建简单自定义sink的一个实例: ```python class DataSink: def __init__(self, destination): self.destination = destination def write(self, data): with open(self.destination, 'a') as file: file.write(data + '\n') # 使用示例 my_sink = DataSink('output.txt') my_sink.write("This is some test data.") ``` 此代码片段展示了一个基本的数据保存类`DataSink`,该类负责把接收到的信息追加至指定路径下的文本文件当中[^1]。 ### 实现细节考虑因素 构建实际应用中的sink需注意几个方面: - **性能优化**:确保高效地处理大量并发请求而不造成瓶颈。 - **错误恢复机制**:提供重试逻辑或其他策略来应对临时性失败情况。 - **可扩展性支持**:允许轻松集成新的目的地类型而无需大幅修改现有结构。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值