SOCKS for blokkerende ikke-TLS RabbitMQ-tilkoblinger i Spring AMQP
Koble en proxybevisst SocketFactory via RabbitConnectionFactoryBean for den blokkerende ikke-TLS AMQP-tilkoblingsveien.
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.