ബ്ലോക്കിംഗ്, 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 സോക്കറ്റ് ഫാക്ടറി നൽകുന്നില്ല.

SocketFactory ഹുക്ക് ബ്ലോക്കിംഗ് I/O-യ്ക്ക് ബാധകമാണെന്ന് RabbitMQ രേഖപ്പെടുത്തുന്നു. NIO അല്ലെങ്കിൽ മറ്റൊരു ട്രാൻസ്പോർട്ടിനായി കോൺഫിഗർ ചെയ്ത ക്ലയന്റിന് ആ ട്രാൻസ്പോർട്ട് പിന്തുണയ്ക്കുന്ന ഹുക്ക് ആവശ്യമാണ്. AMQPS-ന്, അനുയോജ്യമായ TLS സോക്കറ്റ് ഫാക്ടറിയും ലക്ഷ്യസ്ഥാന പരിശോധനയും നിലനിർത്തുക; മുകളിലെ ലളിതമായ ഫാക്ടറി കൊണ്ട് അത് മാറ്റിസ്ഥാപിക്കുന്നത് പൂർണ്ണമായ TLS കോൺഫിഗറേഷനല്ല.

അനുബന്ധ ലേഖനങ്ങൾ