Pentru o conexiune AMQP blocantă și non-TLS, RabbitConnectionFactoryBean din Spring poate transmite o fabrică de socketuri conștientă de SOCKS clientului Java RabbitMQ.

Dacă Commons Net este deja disponibil, configurați bean-ul de fabrică existent înainte de inițializare:

var socksProxy = new java.net.Proxy(
    java.net.Proxy.Type.SOCKS,
    new java.net.InetSocketAddress("proxy.example", 1080));
rabbitFactoryBean.setSocketFactory(
    new org.apache.commons.net.DefaultSocketFactory(socksProxy));

rabbitFactoryBean este RabbitConnectionFactoryBean al aplicației. Păstrați gazda brokerului, portul AMQP, contul și configurarea de gestionare a conexiunilor din Spring. Brokerul rămâne destinația; SocketFactory creează socketurile care îl ating prin SOCKS. Pentru un test ne-sensibil împotriva unui broker public unde intermediarii publici sunt permisibili, lista de proxy SOCKS oferă candidați; potriviți versiunea SOCKS acceptată de runtime și confirmați accesul la gazda și portul reale ale brokerului.

Fabrica Commons Net creează un java.net.Socket neconectat folosind Proxy-ul furnizat. Apoi codul de conexiune blocant al RabbitMQ conectează acel socket pe calea sa normală de conexiune. Doar exportarea HTTP_PROXY nu furnizează această fabrică de socketuri AMQP.

RabbitMQ documentează că hook-ul SocketFactory se aplică pentru I/O blocant. Un client configurat pentru NIO sau alt transport are nevoie de hook-ul acceptat de acel transport. Pentru AMQPS, păstrați o fabrică de socketuri TLS adecvată și verificarea destinației; înlocuirea cu fabrica simplă de mai sus nu este o configurare TLS completă.

Articole similare