Uploaded image for project: 'JBoss Enterprise Application Platform 4 and 5'
  1. JBoss Enterprise Application Platform 4 and 5
  2. JBPAPP-3352

Change the defaults to useDLQ=false for JBoss Messaging

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: 4.3.0.GA_CP07
    • Fix Version/s: TBD EAP 4
    • Component/s: JCA, Messaging
    • Labels:
      None
    • Affects:
      Documentation (Ref Guide, User Guide, etc.), Release Notes, Compatibility/Configuration
    • Workaround:
      Workaround Exists
    • Workaround Description:
      Hide

      set useDLQ to false on the MDB

      Show
      set useDLQ to false on the MDB
    • Release Notes Text:
      Hide
      If a message-driven bean is deployed with the default settings ((useDLQ=true, DLQMaxResent=5) and message redelivery is prompted, messages remain in the queue in a "delivering" state even after the message is delivered to the dead letter queue. The workaround for this issue is to disable the use of the dead letter queue: useDLQ=false.
      Show
      If a message-driven bean is deployed with the default settings ((useDLQ=true, DLQMaxResent=5) and message redelivery is prompted, messages remain in the queue in a "delivering" state even after the message is delivered to the dead letter queue. The workaround for this issue is to disable the use of the dead letter queue: useDLQ=false.
    • Release Notes Docs Status:
      Documented as Known Issue

      Description

      If you deploy a MDB with default setting (useDLQ=true, DLQMaxResent=5) and cause message redelivery , messages will stay as "delivering" state in the queue even after the message is delivered to DLQ. You can observe it through jmx-console (MessageCount, DeliveringCount).
      In case that you use Ordering Group message introduced from JBM 1.4.0.SP3.CP08/1.4.4.GA, subsequent messages will be stuck in the queue and won't be processed.

      I attached reproducer.zip

      • unzip attached reproducer.zip
      • modify {jboss.home}

        in build.xml

      • ant dist
      • ant deploy
      • ant run
      • check MessageCount and DeliveringCount of queue/A with jmx-console
      • ant run
      • check console(or server.log) that the second message is not recieved

      According to Adrian's comment on JBAS-7465:
      ====
      However, if the jms product already supports DLQ processing then you should disable
      the DLQ processing in the MDB. i.e. useDLQ=false.

      It is duplicate work and not as "reliable" as the jms product handling internally, e.g.
      if the jms connection breaks between sending the message to the DLQ and ACKing the
      dead message, you'll eventually end up with the message twice in the DLQ.

      The feature only exists because JBossMQ did not have internal DLQ processing.
      ====

      The defaults should be "useDLQ=false" for JBoss Messaging and in its document encourage users to use JBM settings instead.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  gaohoward Howard Gao
                  Reporter:
                  tkobayashi Toshiya Kobayashi
                • Votes:
                  2 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: