6 Stimmen

Gibt es eine Möglichkeit, die IP-Adresse des Absenders aus einer JMS-Nachricht zu ermitteln?

Ich habe ein System, in dem verschiedene Serverprozesse Anfragen bearbeiten, die als JMS-Nachrichten von verschiedenen Clients über einen JMS-Broker weitergeleitet werden.

Ich versuche, die Quelle der Meldungen zu ermitteln. Gibt es eine Möglichkeit, die IP-Adresse oder andere identifizierende Informationen über den Ursprung zu erhalten?

Klarstellung: Ich habe den Client bereits von unbekannten Benutzern eingesetzt, daher versuche ich, eine Änderung der Nachrichtenklassen zu vermeiden...

3voto

James Strachan Punkte 9078

Es gibt einen optionalen JMS-Header, der in der JMS-Spezifikation als JMSXUserID die den Benutzer identifiziert, der eine Nachricht sendet (die der Broker validiert und sicherstellt, dass sie korrekt ist, um Spoofing zu vermeiden), was einige JMS-Anbieter unterstützen.

Zum Beispiel ist hier wie man sie in Apache ActiveMQ aktiviert

1voto

svlists Punkte 632

Das glaube ich nicht. Zumindest war ich nicht in der Lage, einen Weg zu finden.

Wenn Sie eine Antwort an die Quelle der Nachricht zurückschicken müssen, können Sie den Absender die Eigenschaft "JMSReplyTo" setzen lassen und an dieses Ziel zurückschicken.

Oder Sie könnten Ihr Nachrichtenschema leicht abändern und die Quellennachricht selbst einbetten. Der Absender würde sich in der Nachricht identifizieren und der Empfänger könnte sie von dort aus lesen.

0voto

fawce Punkte 802

Wenn Sie die Kontrolle über den Aufbau der gesendeten Nachrichten haben, können Sie die IP-Adresse jederzeit als Eigenschaft zur Nachricht hinzufügen. Dann können Sie den Wert mit der Funktion getStringProperty Methode auf Nachricht.

0voto

John M Punkte 12793

Wenn Sie den Code der Clients, die die Nachrichten versenden, kontrollieren, könnten Sie einen Eigenschaftsnamen erfinden, z. B. "IPOfSender", und diese Eigenschaft mit Message.setStringProperty() in jede Nachricht aufnehmen.

// client code
String myIPString = ...;
Message m = session.createTextMessage();
m.setStringProperty("IPOfSender", myIPString);
...

0voto

Das hängt von Ihrem JMS-Server ab. Einige Server haben Admin-Tools/APIs, mit denen Sie Verbindungsdetails anzeigen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X