SOCKS για μπλοκαριστικές συνδέσεις RabbitMQ χωρίς TLS στο Spring AMQP
Συνδέστε ένα SocketFactory με επίγνωση διαμεσολαβητή μέσω RabbitConnectionFactoryBean για τη διαδρομή σύνδεσης AMQP χωρίς TLS.
Για μια μπλοκαριστική σύνδεση AMQP χωρίς TLS, το RabbitConnectionFactoryBean του Spring μπορεί να περάσει ένα εργοστάσιο υποδοχών με επίγνωση SOCKS στον πελάτη Java του RabbitMQ.
Αν το 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 προσφέρει υποψηφίους· αντιστοιχίστε την έκδοση SOCKS που υποστηρίζει το runtime και επιβεβαιώστε την πρόσβαση στον πραγματικό host και τη θύρα του broker.
Το εργοστάσιο του Commons Net δημιουργεί ένα μη συνδεδεμένο java.net.Socket χρησιμοποιώντας το παρεχόμενο Proxy. Ο μπλοκαριστικός κώδικας σύνδεσης του RabbitMQ συνδέει στη συνέχεια αυτή την υποδοχή μέσω της κανονικής διαδρομής σύνδεσης. Η απλή εξαγωγή HTTP_PROXY δεν παρέχει αυτό το εργοστάσιο υποδοχών AMQP.
Το RabbitMQ τεκμηριώνει ότι το άγκιστρο SocketFactory ισχύει για μπλοκαριστική Ε/Ε. Ένας πελάτης ρυθμισμένος για NIO ή άλλο μεταφορέα χρειάζεται το υποστηριζόμενο άγκιστρο εκείνου του μεταφορέα. Για AMQPS, διατηρήστε ένα κατάλληλο εργοστάσιο υποδοχών TLS και επαλήθευση προορισμού· η αντικατάστασή του με το απλό εργοστάσιο παραπάνω δεν είναι πλήρης ρύθμιση TLS.