ສຳລັບການເຊື່ອມຕໍ່ 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 ທີ່ຄົບຖ້ວນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ