For en blokkerende, ikke-TLS AMQP-tilkobling kan Springs RabbitConnectionFactoryBean sende en SOCKS-bevisst socketfabrikk til RabbitMQ Java-klienten.

Hvis Commons Net allerede er tilgjengelig, konfigurer den eksisterende factory beanen før initialisering:

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 er applikasjonens RabbitConnectionFactoryBean. Behold brokerverten, AMQP-porten, kontoen og Springs oppsett for tilkoblingsstyring. Brokeren forblir destinasjonen; SocketFactory oppretter socketene som når den gjennom SOCKS. For en ikke-sensitiv test mot en offentlig broker der offentlige mellommenn er tillatt, tilbyr SOCKS-proxylisten kandidater; tilpass SOCKS-versjonen som kjøretiden støtter, og bekreft tilgang til den faktiske brokerverten og -porten.

Fabrikken til Commons Net oppretter en uforbundet java.net.Socket ved hjelp av Proxyen som er oppgitt. Deretter kobler RabbitMQs blokkerende tilkoblingskode den socketen via sin vanlige tilkoblingsvei. Bare å eksportere HTTP_PROXY gir ikke denne AMQP-socketfabrikken.

RabbitMQ dokumenterer at SocketFactory-kroken gjelder for blokkerende I/O. En klient som er konfigurert for NIO eller en annen transport trenger kroken som støttes av den transporten. For AMQPS, behold en passende TLS-socketfabrikk og destinasjonsverifisering; å erstatte den med den enkle fabrikken ovenfor er ikke en fullstendig TLS-konfigurasjon.

Relaterte artikler