10

何らかの理由で、新しいWebプロジェクトのバックエンド言語としてgoを使用する必要があります。

ただし、使用する一部のAPIはJavaで記述され、.jarファイルにパッケージ化されています。

私は行くのが初めてですが、HTTPリクエストが来ると、goがそれを処理して関数をJavaに委任し、応答を返すという一貫した方法で、goを使用してJavaと連携するにはどうすればよいですか。

4

1 に答える 1

13

JavaはどのようなAPIを公開していますか?

RPC APIを公開している場合は、Goのjson-rpcモジュールを利用できます。

それがRESTfulAPIを公開している場合は、Goのhttpモジュールを利用できます。

子プロセス(Javaコード)を生成し、stdinおよびstdoutパイプを介してそれと通信することもできます。そのためにexecモジュールを使用します。

これは完全なコミュニケーションリストではなく、頭に浮かぶ最初の3つだけです。XML API、共有メモリ、または名前付きパイプを使用することもできます。

また、0mqのようなメッセージキューがあなたが探しているものかもしれません。0mqは、受信者が過負荷になった場合に送信者が要求の送信を取り消す、メッセージフレーミング、障害後の再接続など、IPCの多くのトリッキーなビットを処理します。

JavaコードとGoコードの間で通信する方法はたくさんあります。結局、HTTPAPIを介してこれを行うのが最も一般的で簡単だと思います。JavaサーバーでRESTfulまたはRPCAPIを公開し、HTTP APIサービスとして実行し、着信HTTPリクエストの処理にGoを記述してから、GoからJava APIに接続して、応答の作成を支援します。

于 2012-12-27T02:37:20.727 に答える