【问题标题】:Thrift server access unserialized dataThrift 服务器访问未序列化的数据
【发布时间】:2015-03-31 20:23:30
【问题描述】:

thrift 服务器是否有可能不反序列化消息,但它会提供对该数据的访问权限,以便我可以保存它并获取以供以后发送? 准确地说。 我有 IDL 和服务这样的

void sendStructA(StructA)

struct StructA
{
  1:  string string_thing,
  4:  byte   byte_thing,
  9:  i32    i32_thing,
  11: i64    i64_thing
}

并生成客户端和服务器。服务器有接口,所以我在服务器端有代码

void sendStructA(StructA s)
{
      // do something
}

但我不想要 StructA 类型的 s。我需要在它未序列化为 StructA 之前捕获该结构。即选择 TJSON 协议。它应该让我可以访问那个 json

【问题讨论】:

    标签: thrift


    【解决方案1】:

    是的,因为 Thrift 是一个RPC 和序列化框架。代码中有几个例子,寻找“serializer”。基本思想是设置流传输或类似的protocol.Write()protocol.Read() 进出该流,如shown here

    您如何处理之前和之后的数据完全取决于您。例如,您可以将数据发送到服务器,或对其进行处理,或将其丢弃。

    【讨论】:

    • 我知道 TSerializer 类是可能的,但是,当服务器是从协议、处理器等构建时,很难捕捉到这一点。我在我的旧问题上找到了你的旧答案,这非常相似:)你的答案是 TapProtocol。准确地说。我需要客户端和服务器之间的通信,即通过 Tcp,然后服务器不应该给我未序列化的数据而是原始数据.. 即如果我选择 TJSONProtocol。它会给我json
    • "我发现你对我的旧问题的旧答案非常相似" => close as duplicate?
    • 我需要检查一下。我想知道是否有解决方案可以使用自定义处理器来更早地捕捉到它。 Tap 听起来像是重复。而且我不确定它是否存在于Java中
    猜你喜欢
    • 2015-06-07
    • 2019-06-08
    • 2012-10-20
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多