Para sa isang nakakaharang, hindi TLS na koneksyon ng AMQP, maipapasa ng RabbitConnectionFactoryBean ng Spring ang isang pabrika ng socket na may kamalayan sa SOCKS sa kliyenteng Java ng RabbitMQ.

Kung mayroon nang Commons Net, i-configure ang umiiral na factory bean bago ang pagsisimula:

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));

Ang rabbitFactoryBean ay ang RabbitConnectionFactoryBean ng aplikasyon. Panatilihin ang host ng broker, port ng AMQP, account at setup ng pamamahala ng koneksyon ng Spring. Ang broker ang nananatiling destinasyon; ang SocketFactory ang gumagawa ng mga socket na umaabot dito sa pamamagitan ng SOCKS. Para sa isang hindi sensitibong pagsubok laban sa pampublikong broker kung saan pinapayagan ang mga pampublikong tagapamagitan, ang listahan ng proxy na SOCKS ay nag-aalok ng mga kandidato; itugma ang bersyon ng SOCKS na sinusuportahan ng runtime at kumpirmahin ang pag-access sa aktwal na host at port ng broker.

Ang pabrika ng Commons Net ay gumagawa ng java.net.Socket na hindi nakakonekta gamit ang ibinigay na Proxy. Pagkatapos ay ikinokonekta ng nakakaharang code ng koneksyon ng RabbitMQ ang socket na iyon sa pamamagitan ng karaniwang landas ng koneksyon nito. Ang pag-export lamang ng HTTP_PROXY ay hindi nagbibigay ng pabrika ng socket na AMQP na ito.

Itinatala ng RabbitMQ na ang hook ng SocketFactory ay nalalapat sa nakakaharang I/O. Ang kliyenteng na-configure para sa NIO o ibang transport ay nangangailangan ng hook na sinusuportahan ng transport na iyon. Para sa AMQPS, panatilihin ang angkop na pabrika ng socket na TLS at pagpapatunay ng destinasyon; ang pagpapalit nito ng simpleng pabrika sa itaas ay hindi kumpletong configuration ng TLS.

Kaugnay na mga artikulo