Search code examples
javajmsjava-iocarriage-returnlinefeed

JMS TextMessage not recognizing CR LF


It appears to me like JMS TextMessage containing Java.lang.String isn't recognizing \r\n as line-break but instead treating the CR LF as part of input on a Windows machine.

@Override
    public void onMessage(Message message) {
        try {
      String text = ((TextMessage)message).getText();
      String line=null;
      BufferedReader br = new BufferedReader(new StringReader(text));      
      for(line = br.readLine(); line != null; line = br.readLine()) {
           System.out.println(line);
      }
      catch (JMSException e) {
             System.err.println( "Error processing message: " + e.getMessage() );
             e.printStackTrace();
        }

Can anyone provide any input and /or recommednations around the same.


Solution

  • One possible reason could be that it is not sent properly from the source system. I would look there to see what can be done next. Most languages offer cross-platform EOL constant's which might come in handy. For instance, Ruby has four:

    irb(main):002:0> require 'English'; test = "One"+ $INPUT_RECORD_SEPARATOR
    => "One\n"
    irb(main):003:0> test1 = "One" + $/
    => "One\n"
    irb(main):004:0> test2 = "One"+$-0
    => "One\n"
    irb(main):005:0> require 'English';test3="One"+$RS
    => "One\n"
    irb(main):006:0>