Per a una connexió AMQP bloquejant i no-TLS, la RabbitConnectionFactoryBean de Spring pot passar una fàbrica de sockets conscient de SOCKS al client Java de RabbitMQ.

Si Commons Net ja està disponible, configureu el bean de fàbrica existent abans de la inicialització:

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 és la RabbitConnectionFactoryBean de l'aplicació. Mantingueu el seu amfitrió de broker, port AMQP, compte i configuració de gestió de connexions de Spring. El broker continua sent la destinació; la SocketFactory crea els sockets que hi arriben a través de SOCKS. Per a una prova no sensible contra un broker públic on es permeten intermediaris públics, la llista de proxys SOCKS ofereix candidats; ajunteu la versió de SOCKS que admet l'entorn d'execució i confirmeu l'accés a l'amfitrió i port reals del broker.

La fàbrica de Commons Net crea un java.net.Socket no connectat utilitzant el Proxy subministrat. El codi de connexió bloquejant de RabbitMQ connecta després aquest socket pel seu camí de connexió habitual. Exportar només HTTP_PROXY no forneix aquesta fàbrica de sockets AMQP.

RabbitMQ documenta que el ganxo SocketFactory s'aplica a l'E/S bloquejant. Un client configurat per a NIO o un altre transport necessita el ganxo suportat per aquell transport. Per a AMQPS, conserveu una fàbrica de sockets TLS adequada i la verificació de destinació; substituir-la per la fàbrica simple anterior no és una configuració TLS completa.

Articles relacionats