java - 如何在 go 中使用 java

标签 java go

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

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

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

最佳答案

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

如果它公开了一个 RPC API,你可以使用 Go's json-rpc module .

如果它公开了一个 RESTful API,您可以使用 Go's http module.

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

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

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

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

关于java - 如何在 go 中使用 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048699/

相关文章:

http - 如何在 Go 中绑定(bind)一个 http.Client 到一个 IP 地址

apache-spark - Spark - UbuntuVM - Java 运行时环境内存不足

go - 将 go 文件放在模块路径上是一个好习惯吗?

java - Jersey 分段客户端上传

java - 如何从另一个 Maven 模块启动 Spring Boot 应用程序?

go - 使用超时运行命令并在 go 中一次读取一行标准输出

go - 使用 go-restful 和 swagger 显示 PUT 正文格式

string - 如何用随机替换词有效地替换字符串中的词?

java - Java中静态字段什么时候初始化?

java - 使用 JaVers 进行异步审核