Pour une connexion AMQP bloquante et non TLS, le RabbitConnectionFactoryBean de Spring peut transmettre une fabrique de sockets compatible SOCKS au client Java RabbitMQ.

Si Commons Net est déjà disponible, configurez le bean de fabrique existant avant l'initialisation :

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 est le RabbitConnectionFactoryBean de l'application. Conservez son hôte de broker, son port AMQP, son compte et la configuration de gestion des connexions de Spring. Le broker reste la destination ; la SocketFactory crée les sockets qui l'atteignent via SOCKS. Pour un test non sensible contre un broker public où les intermédiaires publics sont autorisés, la liste de proxys SOCKS propose des candidats ; faites correspondre la version SOCKS prise en charge par l'environnement d'exécution et confirmez l'accès à l'hôte et au port réels du broker.

La fabrique de Commons Net crée un java.net.Socket non connecté à l'aide du Proxy fourni. Le code de connexion bloquant de RabbitMQ connecte ensuite ce socket par son chemin de connexion habituel. Le simple export de HTTP_PROXY ne fournit pas cette fabrique de sockets AMQP.

RabbitMQ documente que le point d'extension SocketFactory s'applique aux E/S bloquantes. Un client configuré pour NIO ou un autre transport a besoin du point d'extension pris en charge par ce transport. Pour AMQPS, conservez une fabrique de sockets TLS appropriée et la vérification de la destination ; la remplacer par la fabrique simple ci-dessus ne constitue pas une configuration TLS complète.

Articles similaires