ਬਲਾਕਿੰਗ, TLS-ਰਹਿਤ AMQP ਕਨੈਕਸ਼ਨ ਲਈ Spring ਦਾ RabbitConnectionFactoryBean RabbitMQ Java ਕਲਾਇੰਟ ਨੂੰ SOCKS-ਜਾਣੂ ਸਾਕਟ ਫੈਕਟਰੀ ਦੇ ਸਕਦਾ ਹੈ।

ਜੇ 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 ਸੰਰਚਨਾ ਨਹੀਂ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ