This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • JMS 2.0 shared subscription support

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

No Format
if Link does not exists
        if Source is set
                if Source has SHARED capability
                        subscription_name = Link name up to (excluding) “|”
                        exclusivity_policy = “SHARED”
                else
                        subscription_name = Link name
                        exclusivity_policy = “LINK”
                if Source has GLOBAL capability
                        name_space = global name space
                else
                        name_space = name space derived from container-id
name space                 queue_name = get_queue_name(
                                name_space,
                                subscription_name,
                                Source Durability)
                if queue with name exists
                        if has same exclusivity_policy
                                if different binding key or filter
                                        if no consumer
                                                rebind queue
                                        else
                                                error(resource-locked)
                        else
                                error(resource-locked)
                else
                        create_queue(
                                queue_name
                                exclusivity_policy,
                                Source Durability,
                                Source Expiry Policy)
                        bind queue
                send Attach
        else
                // name_space and subscription_name are derived as above just from Link capabilities instead of Source capabilities
                queue_name = get_queue_name(
                                        name_space,
                                        subscription_name,
                                        TRUE_DURABILITY)
                if queue exists
                        if queue has consumers
                                error(resource-locked) // This breaks the AMQP spec
                        else
                                delete queue
                                Attach Link with null Source
                else
                        error(not-found) // This breaks the AMQP spec                           
else
        queue_name = get_queue_name(
                                name_space,
                                subscription_name,
                                TRUE_DURABILITY)
        if queue exists
                if has same exclusivity_policy
                        if different binding key or filter
                                if no consumer
                                        rebind queue
                                else
                                        error(resource-locked)
                else
                        error(resource-locked)
        else
                create_queue(
                        queue_name
                        exclusivity_policy,
                        Source Durability,
                        Source Expiry Policy)
                bind queue
        send Attach