Wenn ich XML an JMS sende, sollte ich TextMessage oder BytesMessage verwenden

8

Ich habe ziemlich widersprüchliche Informationen im Internet gefunden, und ich denke, dass jeder andere JMS-Anbieter auch die Antwort ändern kann.

Ich versuche zu verstehen, wenn ich XML in ein JMS-System (z. B. ActiveMQ) sende, ob ich ein

verwenden soll
  • BytesMessage: Ich kann garantieren, dass die XML korrekt serialisiert ist und die Präambel der tatsächlichen Codierung entspricht. Außerdem kann ich sicher sein, dass der Client die rohe Darstellung korrekt erhalten kann.

  • TextMessage: In vielen Warteschlangenimplementierungen gibt es APIs zum einfachen Senden von XML. Ich verstehe auch, dass den Nachrichten "Kodierungs" -Informationen angehängt sind. Aber ich riskiere, die Nachricht in einem Format zu codieren (und ihre Präambel zu schreiben) und sie als ein anderes zu empfangen.

Hat jemand eine definitive Antwort oder zumindest einige Gründe, warum Sie sich für eines entscheiden würden?

    
Spence 01.06.2012, 11:57
quelle

1 Antwort

5

Ich stimme jos zu Ihrer Frage zu. Zunächst sollten Sie die Art des Nachrichtentyps auswählen, der die Semantik Ihres Inhalts am besten ausdrückt. Wenn ich das TextMessage Javadoc lese, würde ich mich dafür entscheiden:

  

Dieser Nachrichtentyp kann zum Transport von textbasierten Nachrichten verwendet werden, einschließlich solchen mit XML-Inhalt.

Wenn Sie also Probleme mit der Codierung Ihrer Textnachrichten haben, liegt wahrscheinlich eine Fehlkonfiguration auf der Client / Server-Seite vor. Aber das sollte keine Motivation sein, einen anderen Nachrichtentyp zu missbrauchen, der nicht in erster Linie für die Textübertragung gedacht war, wie zum Beispiel BytesMessage .

N. B: Sogar mit BytesMessage können Sie die Kodierung falsch bekommen. Stellen Sie sich vor:

%Vor%     
Lukas Eder 01.06.2012 12:54
quelle