Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-1867

JmsKeyFormatStrategy not used consistently and JmsMessage.getHeader() not returning correct value

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0-M3
    • 2.0.0
    • camel-jms
    • None
    • 2.0-M3

    Description

      On entry to a route from a JMS endpoint configured with PassthroughJmsKeyFormatStrategy the headers with underscores (_) are passed through correctly.

      However, when any header value in the message is then changed, the original headers are added back into the message using the DefaultJmsKeyFormatStrategy. For example, sending a JMS message with headers;

      HEADER_1=VALUE_1
      HEADER_2=VALUE_1

      we do see just these two headers in the message received into the route.

      However, if we then set a header value in the route, say HEADER_1=VALUE_2, we now see the headers;

      HEADER.1=VALUE_1
      HEADER.2=VALUE_1
      HEADER_1=VALUE_2
      HEADER_2=VALUE_1

      For some reason in the set header process the original message headers and values get added into the message after being passed through the DefaultJmsKeyFormatStrategy. This has the implication of unnecessary duplication of the headers.

      Also, when a message header is accessed using the getHeader(key) method it also goes through the DefaultJmsKeyFormatStrategy to decode the key that is passed.

      In the example above, if after we have updated 'HEADER_1' to 'VALUE_2', we do;

      message.getHeader("HEADER_1") this goes through the DefaultJmsKeyFormatStrategy and actually gets executed as message.getHeader("HEADER.1") which returns VALUE_1 (wrong!).

      Note: if instead we lookup the header through message.getHeaders() which returns the all headers in a Map, we can correctly access the 'HEADER_1' key. (Why is getHeader(key) even going through the KeyFormatStrategy anyway if setHeader() isn't?)

      Attachments

        1. JmsPassThroughtJmsKeyFormatStrategyTest.java
          3 kB
          Mark White
        2. log.out
          6 kB
          Mark White
        3. MessageTester.java
          2 kB
          Mark White

        Activity

          People

            davsclaus Claus Ibsen
            msjwhite Mark White
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: