Spring AMQP ನಲ್ಲಿ TLS-ಅಲ್ಲದ RabbitMQ ಸಂಪರ್ಕಗಳನ್ನು ಬ್ಲಾಕ್ ಮಾಡಲು SOCKS
ಬ್ಲಾಕಿಂಗ್ TLS-ಅಲ್ಲದ AMQP ಸಂಪರ್ಕ ಮಾರ್ಗಕ್ಕಾಗಿ RabbitConnectionFactoryBean ಮೂಲಕ ಪ್ರಾಕ್ಸಿ-ಅರಿವಿನ SocketFactory ಸೇರಿಸಿ.
ಬ್ಲಾಕಿಂಗ್, TLS-ಅಲ್ಲದ AMQP ಸಂಪರ್ಕಕ್ಕಾಗಿ Spring ನ RabbitConnectionFactoryBean SOCKS-ಅರಿವಿನ ಸಾಕೆಟ್ ಫ್ಯಾಕ್ಟರಿಯನ್ನು RabbitMQ Java ಕ್ಲೈಂಟ್ಗೆ ನೀಡಬಹುದು.
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. ಅದರ broker ಹೋಸ್ಟ್, AMQP ಪೋರ್ಟ್, ಖಾತೆ ಮತ್ತು Spring ಸಂಪರ್ಕ-ನಿರ್ವಹಣೆ ಸೆಟಪ್ ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ. broker ಗಮ್ಯಸ್ಥಾನವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ; SocketFactory SOCKS ಮೂಲಕ ಅದನ್ನು ತಲುಪುವ ಸಾಕೆಟ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. ಸಾರ್ವಜನಿಕ ಮಧ್ಯಸ್ಥಗಾರರನ್ನು ಅನುಮತಿಸುವ ಸಾರ್ವಜನಿಕ broker ವಿರುದ್ಧದ ಸೂಕ್ಷ್ಮವಲ್ಲದ ಪರೀಕ್ಷೆಗೆ, SOCKS ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಅಭ್ಯರ್ಥಿಗಳನ್ನು ನೀಡುತ್ತದೆ; runtime ಬೆಂಬಲಿಸುವ SOCKS ಆವೃತ್ತಿಯೊಂದಿಗೆ ಹೊಂದಿಸಿ ಮತ್ತು ನಿಜವಾದ broker ಹೋಸ್ಟ್ ಹಾಗೂ ಪೋರ್ಟ್ಗೆ ಪ್ರವೇಶವನ್ನು ದೃಢೀಕರಿಸಿ.
Commons Net ನ ಫ್ಯಾಕ್ಟರಿ ನೀಡಿದ Proxy ಬಳಸಿ ಸಂಪರ್ಕವಿಲ್ಲದ java.net.Socket ರಚಿಸುತ್ತದೆ. ನಂತರ RabbitMQ ನ ಬ್ಲಾಕಿಂಗ್ ಸಂಪರ್ಕ ಕೋಡ್ ಆ ಸಾಕೆಟ್ ಅನ್ನು ತನ್ನ ಸಾಮಾನ್ಯ ಸಂಪರ್ಕ ಮಾರ್ಗದ ಮೂಲಕ ಸಂಪರ್ಕಿಸುತ್ತದೆ. ಕೇವಲ HTTP_PROXY ರಫ್ತು ಮಾಡುವುದು ಈ AMQP ಸಾಕೆಟ್ ಫ್ಯಾಕ್ಟರಿಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.
RabbitMQ, SocketFactory ಹುಕ್ ಬ್ಲಾಕಿಂಗ್ I/O ಗೆ ಅನ್ವಯಿಸುತ್ತದೆ ಎಂದು ದಾಖಲಿಸುತ್ತದೆ. NIO ಅಥವಾ ಇನ್ನೊಂದು ಸಾರಿಗೆಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ಕ್ಲೈಂಟ್ಗೆ ಆ ಸಾರಿಗೆ ಬೆಂಬಲಿಸುವ ಹುಕ್ ಬೇಕು. AMQPS ಗಾಗಿ, ಸೂಕ್ತವಾದ TLS ಸಾಕೆಟ್ ಫ್ಯಾಕ್ಟರಿ ಮತ್ತು ಗಮ್ಯಸ್ಥಾನ ಪರಿಶೀಲನೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ; ಮೇಲಿನ ಸಾಮಾನ್ಯ ಫ್ಯಾಕ್ಟರಿಯಿಂದ ಅದನ್ನು ಬದಲಿಸುವುದು ಪೂರ್ಣ TLS ಕಾನ್ಫಿಗರೇಶನ್ ಅಲ್ಲ.