Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-3536

Virtual Topic Subscriber and Individual Dead Letter Queue Handling

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.5.0
    • 5.6.0
    • Broker
    • None
    • Windows XP
      Fuse Message Broker version ActiveMQ trunk

    • Patch Available

    Description

      Summary:
      Transactional Acknowledgement with Virtual Topic / Subscriber Queues does not indicate which subscriber had a problem consuming the messages. Messages are simply delivered to Topic specific DLQ rather than to the Subscriber/Consumer specific DLQ.

      Steps to create issue:

      Configure the Individual Dead Letter Queue policy in Fuse Message Broker.
      Next create an ActiveMQ Virtual Topic with Subscriber Queue(s).
      Send messages to Virtual Topic
      Rollback/abort ack for one message (consistently) until this message gets delivered to the dead letter queue.

      Result:
      Message is sent to the Topic Specific Dead Letter Queue rather than to the DLQ specific to the Subscriber Queue.

      Resolution:
      Patch and unit test are are attached.
      This test verifies that all undelivered messages sent to a consumers listening on a queue associated with a virtual topic with be forwarded to separate DLQ's.

      Note that the broker config, Individual Dead Letter Strategy, needs to have the enable audit set to false to allows duplicate messages sent from a topic to individual consumers to be forwarded to the DLQ's.

      <deadLetterStrategy>
      <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.broker.region.policy.IndividualDeadLetterStrategy">
      <property name="useQueueForQueueMessages" value="true"></property>
      <property name="processNonPersistent" value="true"></property>
      <property name="processExpired" value="false"></property>
      <property name="enableAudit" value="false"></property>
      </bean>
      </deadLetterStrategy>

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            smacey Susan Macey
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment