Spring AMQP'de TLS olmayan RabbitMQ bağlantılarını engellemek için SOCKS
Engellemeli TLS olmayan AMQP bağlantı yolu için RabbitConnectionFactoryBean üzerinden proxy'yi bilen bir SocketFactory ekleyin.
Engellemeli, TLS olmayan bir AMQP bağlantısı için Spring'in RabbitConnectionFactoryBean'i SOCKS'i bilen soket fabrikasını RabbitMQ Java istemcisine aktarabilir.
Commons Net zaten mevcutsa, başlatmadan önce var olan factory bean'i yapılandırın:
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, uygulamanın RabbitConnectionFactoryBean'idir. Broker ana bilgisayarını, AMQP bağlantı noktasını, hesabı ve Spring bağlantı yönetimi kurulumunu koruyun. Broker hedef olarak kalır; SocketFactory, ona SOCKS üzerinden ulaşan soketleri oluşturur. Genel aracıların izin verildiği genel bir broker'a karşı hassas olmayan bir test için SOCKS proxy listesi adaylar sunar; çalışma zamanının desteklediği SOCKS sürümüyle eşleştirin ve gerçek broker ana bilgisayarına ve bağlantı noktasına erişimi doğrulayın.
Commons Net'in fabrikası, verilen Proxy'yi kullanarak bağlanmamış bir java.net.Socket oluşturur. Ardından RabbitMQ'nun engellemeli bağlantı kodu bu soketi olağan bağlantı yoluyla bağlar. Yalnızca HTTP_PROXY dışa aktarmak bu AMQP soket fabrikasını sağlamaz.
RabbitMQ, SocketFactory kancasının engellemeli G/Ç için geçerli olduğunu belgeler. NIO veya başka bir taşıma için yapılandırılmış bir istemci, o taşımanın desteklediği kancaya ihtiyaç duyar. AMQPS için uygun bir TLS soket fabrikası ve hedef doğrulaması koruyun; yukarıdaki basit fabrikayla değiştirmek tam bir TLS yapılandırması değildir.