SOCKS ສຳລັບການເຊື່ອມຕໍ່ RabbitMQ ທີ່ບໍ່ໃຊ້ TLS ໃນ Spring AMQP
ເຊື່ອມຕໍ່ SocketFactory ທີ່ຮູ້ຈັກ proxy ຜ່ານ RabbitConnectionFactoryBean ສຳລັບເສັ້ນທາງເຊື່ອມຕໍ່ AMQP ທີ່ບໍ່ໃຊ້ TLS.
ສຳລັບການເຊື່ອມຕໍ່ AMQP ແບບ blocking ແລະ ບໍ່ໃຊ້ TLS, RabbitConnectionFactoryBean ຂອງ Spring ສາມາດສົ່ງໂຮງງານ socket ທີ່ຮູ້ຈັກ SOCKS ໄປຫາ client 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 ສາທາລະນະ ທີ່ອະນຸຍາດໃຫ້ມີຕົວກາງສາທາລະນະ, ລາຍຊື່ proxy SOCKS ສະເໜີຜູ້ສະໝັກ; ຈັບຄູ່ກັບເວີຊັນ SOCKS ທີ່ runtime ຮອງຮັບ ແລະ ຢືນຢັນການເຂົ້າເຖິງ host ແລະ ພອດຕົວຈິງຂອງ broker.
ໂຮງງານຂອງ Commons Net ສ້າງ java.net.Socket ທີ່ບໍ່ໄດ້ເຊື່ອມຕໍ່ ໂດຍໃຊ້ Proxy ທີ່ໃຫ້ໄວ້. ຫຼັງຈາກນັ້ນ ໂຄ້ດການເຊື່ອມຕໍ່ແບບ blocking ຂອງ RabbitMQ ຈະເຊື່ອມຕໍ່ socket ນັ້ນຜ່ານເສັ້ນທາງການເຊື່ອມຕໍ່ປົກກະຕິ. ການສົ່ງອອກພຽງ HTTP_PROXY ບໍ່ໄດ້ໃຫ້ໂຮງງານ socket AMQP ນີ້.
RabbitMQ ເອກະສານວ່າ hook SocketFactory ໃຊ້ກັບ I/O ແບບ blocking. client ທີ່ຕັ້ງຄ່າສຳລັບ NIO ຫຼື transport ອື່ນຕ້ອງການ hook ທີ່ transport ນັ້ນຮອງຮັບ. ສຳລັບ AMQPS, ຮັກສາໂຮງງານ socket TLS ທີ່ເໝາະສົມ ແລະ ການກວດສອບປາຍທາງ; ການປ່ຽນແທນດ້ວຍໂຮງງານງ່າຍໆຂ້າງເທິງບໍ່ແມ່ນການຕັ້ງຄ່າ TLS ທີ່ຄົບຖ້ວນ.