SOCKS5-Proxy für Qpid JMS mit Netty-Handlern konfigurieren
Binden Sie einen SOCKS5-ProxyHandler-Lieferanten über Qpid-JMS-Verbindungserweiterungen ein und behalten Sie die AMQPS-Broker-URI bei.
Der Netty-Transport von Qpid JMS kann über eine Verbindungserweiterung einen frischen Proxy-Handler beziehen:
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 und InetSocketAddress sind JDK-Typen. Die Proxy-Handler gehören zu Netty, die Factory und das Erweiterungs-Enum zu org.apache.qpid.jms.
Für einen öffentlich erreichbaren Broker auf einer zulässigen öffentlichen Proxy-Route bietet die SOCKS5-Proxy-Liste Host- und Portkandidaten; bestätigen Sie, dass der gewählte Knoten den tatsächlichen Host und Port des Brokers zulässt. Die Erweiterung gibt einen Lieferanten zurück; jeder Aufruf des Lieferanten erzeugt einen neuen Handler. Einen einzigen erfassten veränderlichen Handler für mehrere Verbindungen zurückzugeben, würde diese Eigentumsregelung verletzen.
Für die SOCKS5-Authentifizierung verwenden Sie die Handler-Überladung, die Benutzername und Passwort annimmt. Behalten Sie die Broker-Anmeldedaten an der JMS-Verbindung und bewahren Sie die echte AMQPS-Broker-URI und den TLS-Namen.
Die Erweiterung unterstützt die HTTP-, SOCKS4- und SOCKS5-Proxy-Handler von Netty. Bei HTTP CONNECT muss der Vermittler den Zielport des Brokers zulassen.