Qpid JMSのNettyトランスポートは、接続拡張を通じて新しいプロキシハンドラーを取得できます。

Supplier<ProxyHandler> handlers = () ->
    new Socks5ProxyHandler(
        new InetSocketAddress("proxy.example", 1080));

JmsConnectionFactory factory = new JmsConnectionFactory(
    "amqps://broker.example:5671");
factory.setExtension(
    JmsConnectionExtensions.PROXY_HANDLER_SUPPLIER.toString(),
    (connection, remote) -> handlers);

SupplierとInetSocketAddressはJDKの型です。プロキシハンドラーはNettyに、ファクトリと拡張の列挙型はorg.apache.qpid.jmsに属します。

許可された公開プロキシ経路で公開到達可能なブローカーには、SOCKS5プロキシ一覧がホストとポートの候補を提供します。選択したノードがブローカーの実際のホストとポートを許可することを確認してください。拡張はサプライヤーを返し、サプライヤー呼び出しごとに新しいハンドラーを作成します。捕獲した1つの可変ハンドラーを複数の接続に返すと、その所有権の取り決めに反します。

SOCKS5認証には、ユーザー名とパスワードを受け取るハンドラーのオーバーロードを使用します。ブローカーの資格情報はJMS接続に保持し、実際のAMQPSブローカーURIとTLS名を維持してください。

拡張はNettyのHTTP、SOCKS4、SOCKS5プロキシハンドラーをサポートします。HTTP CONNECTでは、仲介者がブローカーの対象ポートを許可する必要があります。

関連記事