SOCKS សម្រាប់ការភ្ជាប់ RabbitMQ ដែលមិនមែន TLS ក្នុង Spring AMQP
ភ្ជាប់ SocketFactory ដែលដឹងអំពីប្រូកស៊ីតាមរយៈ RabbitConnectionFactoryBean សម្រាប់ផ្លូវភ្ជាប់ AMQP ដែលមិនមែន TLS។
សម្រាប់ការភ្ជាប់ AMQP បែបប្លុក និងមិនមែន TLS RabbitConnectionFactoryBean របស់ Spring អាចបញ្ជូនរោងចក្រ socket ដែលដឹងអំពី 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 របស់កម្មវិធី។ រក្សា host broker របស់វា ច្រក AMQP គណនី និងការកំណត់គ្រប់គ្រងការភ្ជាប់របស់ Spring។ broker នៅតែជាគោលដៅ; SocketFactory បង្កើត socket ដែលទៅដល់វាតាមរយៈ SOCKS។ សម្រាប់ការធ្វើតេស្តដែលមិនប្រកាន់អារម្មណ៍ប្រឆាំងនឹង broker សាធារណៈ ដែលអនុញ្ញាតឱ្យមានអន្តរការីសាធារណៈ បញ្ជីប្រូកស៊ី SOCKS ផ្តល់បេក្ខជន; ផ្គូផ្គងកំណែ SOCKS ដែល runtime គាំទ្រ ហើយបញ្ជាក់ការចូលទៅ host និងច្រកពិតប្រាកដរបស់ broker។
រោងចក្រ Commons Net បង្កើត java.net.Socket ដែលមិនបានភ្ជាប់ ដោយប្រើ Proxy ដែលបានផ្តល់។ បន្ទាប់មក កូដភ្ជាប់បែបប្លុករបស់ RabbitMQ ភ្ជាប់ socket នោះតាមផ្លូវភ្ជាប់ធម្មតារបស់វា។ ការនាំចេញតែ HTTP_PROXY មិនផ្តល់រោងចក្រ socket AMQP នេះទេ។
RabbitMQ បានចងក្រងថា ទំពក់ SocketFactory អនុវត្តចំពោះ I/O បែបប្លុក។ អតិថិជនដែលបានកំណត់សម្រាប់ NIO ឬការដឹកជញ្ជូនផ្សេងទៀតត្រូវការទំពក់ដែលការដឹកជញ្ជូននោះគាំទ្រ។ សម្រាប់ AMQPS រក្សារោងចក្រ socket TLS ដែលសមស្រប និងការផ្ទៀងផ្ទាត់គោលដៅ; ការជំនួសវាដោយរោងចក្រធម្មតាខាងលើមិនមែនជាការកំណត់ TLS ពេញលេញទេ។