ActiveMQ
  1. ActiveMQ
  2. AMQ-1853 Optional non-blocking redelivery
  3. AMQ-2710

Validate camel route to pull from DLQ and reroute to destination after a delay

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.3.1
    • Fix Version/s: 5.4.0
    • Component/s: Test Cases
    • Labels:
      None

      Description

      Redelivery attempts pile up in the activemq RA and block a consumer in pure jms. A strategy where messag order is ignored and messages are rerouted to the original destination after some period can allow the broker to deal with the redelivery and allow the application to continue with valid messages while the remaining ones are pending.

      Using a no retry delivery policy and an individual DLQ policy allows redeliveries to be diverted to the DLQ immediately. Adding in a camel route that takes from the DLQ and schedules a delayed delivery to the original destination provided a clean alternative, at the cost of breaking queue order semantics for the pure JMS case.

      An example of such a camel route would be nice.

        Issue Links

          Activity

          Gary Tully created issue -
          Hide
          Gary Tully added a comment -

          resolved in r937289

          The IdentityMessageReuseConverter allows the in message to be reused as is, for the transfer. The AMQ_SCHEDULED_DELAY header tells the broker to delay delivery by 30 seconds.
          Example route:

           <bean id="messageConverter" class="org.apache.activemq.camel.converter.IdentityMessageReuseConverter" />
            <camelContext xmlns="http://camel.apache.org/schema/spring" trace="true">
              <route>
                <setHeader headerName="CamelRedeliveryMarker"><constant>true</constant></setHeader>
                <setHeader headerName="AMQ_SCHEDULED_DELAY"><constant>30000</constant></setHeader>
                <to pattern="InOnly" uri="activemq:camelRedeliveryQ?explicitQosEnabled=true&amp;messageConverter=#messageConverter"/>
              </route>
            </camelContext>
          
          
          Show
          Gary Tully added a comment - resolved in r937289 The IdentityMessageReuseConverter allows the in message to be reused as is, for the transfer. The AMQ_SCHEDULED_DELAY header tells the broker to delay delivery by 30 seconds. Example route: <bean id= "messageConverter" class= "org.apache.activemq.camel.converter.IdentityMessageReuseConverter" /> <camelContext xmlns= "http: //camel.apache.org/schema/spring" trace= " true " > <route> <setHeader headerName= "CamelRedeliveryMarker" ><constant> true </constant></setHeader> <setHeader headerName= "AMQ_SCHEDULED_DELAY" ><constant>30000</constant></setHeader> <to pattern= "InOnly" uri= "activemq:camelRedeliveryQ?explicitQosEnabled= true &amp;messageConverter=#messageConverter" /> </route> </camelContext>
          Gary Tully made changes -
          Field Original Value New Value
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Gary Tully made changes -
          Link This issue is related to AMQ-1853 [ AMQ-1853 ]
          Jeff Turner made changes -
          Project Import Fri Nov 26 22:32:02 EST 2010 [ 1290828722158 ]
          Gary Tully committed 1089033 (2 files)
          Gary Tully committed 1089037 (1 file)
          Eric Hubert made changes -
          Link This issue is related to AMQ-3597 [ AMQ-3597 ]

            People

            • Assignee:
              Gary Tully
              Reporter:
              Gary Tully
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development