SOCKS untuk Sambungan RabbitMQ Bukan TLS yang Menyekat dalam Spring AMQP
Lampirkan SocketFactory yang sedar proksi melalui RabbitConnectionFactoryBean untuk laluan sambungan AMQP bukan TLS yang menyekat.
Untuk sambungan AMQP yang menyekat dan bukan TLS, RabbitConnectionFactoryBean Spring boleh menyerahkan kilang soket yang sedar SOCKS kepada klien Java RabbitMQ.
Jika Commons Net sudah tersedia, konfigurasikan factory bean sedia ada sebelum permulaan:
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 ialah RabbitConnectionFactoryBean aplikasi. Kekalkan hos broker, port AMQP, akaun dan tetapan pengurusan sambungan Spring. Broker kekal sebagai destinasi; SocketFactory mencipta soket yang mencapainya melalui SOCKS. Untuk ujian tidak sensitif terhadap broker awam yang membenarkan perantara awam, senarai proksi SOCKS menawarkan calon; padankan versi SOCKS yang disokong runtime dan sahkan akses ke hos dan port broker sebenar.
Kilang Commons Net mencipta java.net.Socket yang tidak bersambung menggunakan Proxy yang diberikan. Kod sambungan menyekat RabbitMQ kemudian menyambungkan soket itu melalui laluan sambungan biasa. Mengeksport HTTP_PROXY sahaja tidak menyediakan kilang soket AMQP ini.
RabbitMQ mendokumenkan bahawa cangkuk SocketFactory terpakai kepada I/O menyekat. Klien yang dikonfigurasikan untuk NIO atau pengangkutan lain memerlukan cangkuk yang disokong pengangkutan itu. Untuk AMQPS, kekalkan kilang soket TLS yang sesuai dan pengesahan destinasi; menggantikannya dengan kilang mudah di atas bukan konfigurasi TLS yang lengkap.