如何使用Java与Go技术?

10

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

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

我对go不熟悉,如何以一致的方式使用go与Java合作处理HTTP请求, 并将某些函数委托给Java,然后返回响应。


我对Go编程语言并不是很了解 - 然而,这些信息可能会有用。http://programmers.stackexchange.com/questions/157536/how-can-i-write-a-set-of-functions-that-can-be-invoked-from-almost-any-program - Anderson Green
请尽量更好地限定“使用”(在标题和帖子中)。 - user166390
1个回答

14
你的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以协助创建响应。


谢谢您的回答。该API是一些RESTful API,使用HTTPS进行通信,但我认为我不能再次使用Go来包装整个API集合,因为API集合太大了。但是,如果效率符合要求,我认为stdin和stdout可能是一个不错的选择。我会尝试一下。 - nius
我差点忘了消息队列! - nius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接