SOCKS за блокиращи non-TLS връзки към RabbitMQ в Spring AMQP
Прикачете SocketFactory с поддръжка на прокси чрез RabbitConnectionFactoryBean за пътя на блокиращата non-TLS AMQP връзка.
За блокираща, non-TLS AMQP връзка, RabbitConnectionFactoryBean на Spring може да предаде фабрика за сокети с поддръжка на SOCKS на Java клиента на RabbitMQ.
Ако Commons Net вече е наличен, конфигурирайте съществуващия factory bean преди инициализация:
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 е RabbitConnectionFactoryBean на приложението. Запазете хоста на брокера, AMQP порта, акаунта и настройката за управление на връзките на Spring. Брокерът остава дестинацията; SocketFactory създава сокетите, които го достигат през SOCKS. За нетлежлив тест срещу публичен брокер, където публичните посредници са разрешени, списъкът със SOCKS прокси предлага кандидати; съобразете поддържаната от средата версия на SOCKS и потвърдете достъпа до действителния хост и порт на брокера.
Фабриката на Commons Net създава несвързан java.net.Socket с подадения Proxy. След това блокиращият код за връзка на RabbitMQ свързва този сокет по нормалния си път за връзка. Самото експортиране на HTTP_PROXY не предоставя тази фабрика за AMQP сокети.
RabbitMQ документира, че куката SocketFactory важи за блокиращ I/O. Клиент, конфигуриран за NIO или друг транспорт, се нуждае от поддържаната от този транспорт кука. За AMQPS запазете подходяща TLS фабрика за сокети и проверка на дестинацията; замяната ѝ с обикновената фабрика по-горе не е пълна TLS конфигурация.