សម្រាប់ការភ្ជាប់ 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 ពេញលេញទេ។

អត្ថបទពាក់ព័ន្ធ