استفاده از SOCKS برای اتصالهای مسدودکننده غیر TLS در RabbitMQ در Spring AMQP
یک SocketFactory آگاه از پروکسی را از طریق RabbitConnectionFactoryBean برای مسیر اتصال AMQP غیر TLS مسدودکننده متصل کنید.
برای یک اتصال AMQP مسدودکننده و غیر TLS، RabbitConnectionFactoryBean در Spring میتواند یک کارخانه سوکت آگاه از SOCKS را به کلاینت Java در RabbitMQ بدهد.
اگر Commons Net از قبل در دسترس است، 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 گزینههایی ارائه میدهد؛ نسخه SOCKS پشتیبانیشده توسط runtime را تطبیق دهید و دسترسی به میزبان و درگاه واقعی broker را تأیید کنید.
کارخانه Commons Net با استفاده از Proxy دادهشده یک java.net.Socket متصلنشده میسازد. سپس کد اتصال مسدودکننده RabbitMQ آن سوکت را از مسیر اتصال عادی خود متصل میکند. صرفاً صادر کردن HTTP_PROXY این کارخانه سوکت AMQP را فراهم نمیکند.
RabbitMQ مستند میکند که قلاب SocketFactory برای ورودی/خروجی مسدودکننده اعمال میشود. کلاینتی که برای NIO یا حملونقل دیگری پیکربندی شده به قلاب پشتیبانیشده آن حملونقل نیاز دارد. برای AMQPS، یک کارخانه سوکت TLS مناسب و بررسی مقصد را حفظ کنید؛ جایگزینی آن با کارخانه ساده بالا پیکربندی کامل TLS نیست.