NettyハンドラーでQpid JMSのSOCKS5プロキシを設定する
AMQPSブローカーのURIを保ったまま、Qpid JMSの接続拡張でSOCKS5 ProxyHandlerサプライヤーを接続します。
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では、仲介者がブローカーの対象ポートを許可する必要があります。