通过RMI将ProtocolBuffer Message.Builder发送到另一台机器

时间:2011-03-30 21:34:36

标签: java rmi protocol-buffers netty

我有以下pesudocode:

public void sendPB(ObjectId userId, Message.Builder mb) {
    if (userId is logged in to server) {
        set mb.ackId to random chars
        lookup socket and send mb.build()
    }
    else {
        forward message to user's server via RMI
    }
}

问题是Message.Builders没有实现Serializable,所以你不能通过RMI直接发送它。

有一种简单的方法吗?

我尝试从构建器构建部分PB并将其发送过来,但为了重建它,您需要知道类型或描述符。 Descriptor也没有实现Serializable。

由于

2 个答案:

答案 0 :(得分:0)

您无法致电build(),获取Message,并以正确的格式发送(例如toString())。在另一端,您可以将其充气回Message,如果需要,则将其重新设置为toBuilder()的构建器。

您也可以将邮件转换为二进制格式并发送。

也许我误解了 - ProtocolBuffers的重点是让Message成为线表示,因此有很多方法可以做到(大多数都是Serializable或者简单地包裹着。)

答案 1 :(得分:0)

我让它工作了......我必须在RMI消息中包含一个typeID字段。然后,我可以获取typeID并将其解析为Message Builder,然后mergeFrom部分构建的消息的字节。