由于某些原因,我必须使用go作为我的新的Web项目的后端语言.
然而,我们将使用的一些apis是用Java编写的,并且被包装在.jar文件中.
我是新来的,我如何以一致的方式使用go来与Java协作,当HTTP请求到来时,go将处理它并将一些函数委托给java,然后返回响应.
解决方法
你的Java公开了什么样的API?
如果它暴露了一个RPC API,你可以使用Go’s json-rpc module.
如果暴露了一个RESTful API,您可以使用Go’s http module.
您还可以生成一个子进程(您的java代码),并通过stdin和stdout管道进行交谈.你会使用exec module.
这不是一个详尽的沟通清单,只是头三个想法.您还可以使用XML API,共享内存或命名管道.
另外,像0mq这样的消息队列可能是您要查找的. 0mq处理了很多IPC的棘手部分,例如,如果接收方超载,消息成帧以及故障后重新连接,则使发送者退回发送请求.
您可以通过多种方式在Java代码和Go代码之间进行通信.我认为最终通过HTTP API最常见和简单.在Java服务器中暴露一个RESTful或RPC API,将其作为HTTP API服务运行,编写您的Go来处理传入的HTTP请求,然后从Go连接到Java API以协助创建响应.