10

出于某种原因,我必须使用 go 作为我的新 Web 项目的后端语言。

但是,我们将使用的一些 api 是用 Java 编写的,并打包在 .jar 文件中。

我是新手,如何使用 go 以一致的方式与 Java 合作,当 HTTP 请求到来时,go 将处理它并将一些功能委托给 java,然后返回响应。

4

1 回答 1

13

您的 Java 公开了什么样的 API?

如果它公开了一个 RPC API,你可以使用Go 的 json-rpc 模块

如果它公开了一个 RESTful API,你可以使用Go 的 http 模块。

您还可以生成一个子进程(您的 java 代码)并通过 stdin 和 stdout 管道与其对话。您将为此使用exec 模块

这不是一个详尽的沟通清单,只是想到的前三个。您还可以使用 XML API、共享内存或命名管道。

此外,您可能正在寻找像0mq这样的消息队列。0mq 处理了 IPC 的许多棘手问题,例如在接收方过载时让发送方停止发送请求、消息成帧以及在失败后重新连接。

您可以通过多种方式在 Java 代码和 Go 代码之间进行通信。我认为最终通过 HTTP API 这样做是最常见和最简单的。在 Java 服务器中公开 RESTful 或 RPC API,将其作为 HTTP API 服务运行,编写 Go 以处理传入的 HTTP 请求,然后从 Go 连接 Java API 以帮助创建响应。

于 2012-12-27T02:37:20.727 回答