SOCKS untuk Koneksi RabbitMQ Non-TLS yang Memblokir di Spring AMQP
Pasang SocketFactory yang sadar proksi melalui RabbitConnectionFactoryBean untuk jalur koneksi AMQP non-TLS yang memblokir.
Untuk koneksi AMQP yang memblokir dan non-TLS, RabbitConnectionFactoryBean milik Spring dapat meneruskan pabrik soket yang sadar SOCKS ke klien Java RabbitMQ.
Jika Commons Net sudah tersedia, konfigurasikan factory bean yang ada sebelum inisialisasi:
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 adalah RabbitConnectionFactoryBean aplikasi. Pertahankan host broker, port AMQP, akun, dan pengaturan pengelolaan koneksi Spring miliknya. Broker tetap menjadi tujuan; SocketFactory membuat soket yang mencapainya melalui SOCKS. Untuk pengujian tidak sensitif terhadap broker publik yang mengizinkan perantara publik, daftar proksi SOCKS menawarkan kandidat; cocokkan versi SOCKS yang didukung runtime dan pastikan akses ke host dan port broker yang sebenarnya.
Pabrik Commons Net membuat java.net.Socket yang belum terhubung menggunakan Proxy yang diberikan. Kode koneksi yang memblokir dari RabbitMQ kemudian menghubungkan soket itu melalui jalur koneksi normalnya. Hanya mengekspor HTTP_PROXY tidak menyediakan pabrik soket AMQP ini.
RabbitMQ mendokumentasikan bahwa kait SocketFactory berlaku untuk I/O yang memblokir. Klien yang dikonfigurasi untuk NIO atau transport lain memerlukan kait yang didukung transport tersebut. Untuk AMQPS, pertahankan pabrik soket TLS yang sesuai dan verifikasi tujuan; menggantinya dengan pabrik sederhana di atas bukan konfigurasi TLS yang lengkap.