SOCKS pentru conexiunile RabbitMQ non-TLS blocante în Spring AMQP
Atașați o SocketFactory conștientă de proxy prin RabbitConnectionFactoryBean pentru calea de conexiune AMQP non-TLS blocantă.
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ă.