Versions Compared

Key

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

...

Not Null Source

SHARED

GLOBAL

TERMINUS DURABILITY

outcome

YES

NO

NO

NO

Create a non-durable queue with random name and exclusivity policy “link”. Bind queue to exchange “exchange” using binding key “binding”. Broker replies with attach having capability “topic” on a source and attach offered capability “SHARED_SUB”.

YES

NO

NO

YES

Create a durable queue with name derived from link name, container id and source durability. Exclusivity policy is set to “link”. Bind queue to exchange. Broker replies with attach having capability “topic” on a source and attach offered capability “SHARED_SUB”.

If queue already exists the link should be refused with error “resource locked”

YES

NO

YES

NO

The same as for SHARED=NO, GLOBAL=NO and DURABLE=NO

YES

NO

YES

YES

Create a durable queue with name derived from link name, global name space and source durability. Exclusivity policy is set to “link”. Bind queue to exchange. Broker replies with attach having capabilities “topic” and “global” on a source and attach offered capability “SHARED_SUB”.

If queue already exists the link should be refused with error “resource locked”

YES

YES

NO

NO

Create a non-durable queue with name derived from link name (up to “|”), container id and source durability. Exclusivity policy is set to “shared”. Bind queue to exchange. Broker replies with attach having capabilities “topic” and “shared” on a source and attach offered capability “SHARED_SUB”.

If queue already exists and filters and/or binding key are not the same as derived from attach source, then:

    • if there is/are existing consumer(s), refuse the link with error “resource locked”

    • if there is no consumer, rebind queue using new filters and/or binding key

If existing queue exclusivity policy is not “shared”, then link creation is refused with error “resource locked”.

If existing queue lifetime and/or durability are different from expected, then link creation is allowed but the source fields in the reply should be modified accordingly.

YES

YES

NO

YES

Create a durable queue with name derived from link name (up to “|”), container id and source durability. Exclusivity policy is set to “shared”. Bind queue to exchange. Broker replies with attach having capabilities “topic” and “shared” on a source and attach offered capability “SHARED_SUB”.

See above, if queue exists

YES

YES

YES

NO

Create a non-durable queue with name derived from link name (up to “|”), global namespace and source durability. Exclusivity policy is set to “shared”. Bind queue to exchange. Broker replies with attach having capabilities “topic”, “shared” and “global” on a source and attach offered capability “SHARED_SUB”.

See above, if queue exists

YES

YES

YES

YES

Create a durable queue with name derived from link name (up to “|”), global name space and source durability. Exclusivity policy is set to “shared”. Bind queue to exchange. Broker replies with attach having capabilities “topic”, “shared” and “global” on a source and attach offered capability “SHARED_SUB”.

See above, if queue exists

NO

NO

NO

N/A

Look for queue with name derived from link name, container id and “true” durability.

If queue exists and there is no consumer, delete queue. Reply with attach having null sourceAttach the link with the Source set.

If queue exists but there is/are consumer(s), refuse the link with error “resource locked”.

If queue does not exist, refuse the link with error “not found”. TODO: This breaks the AMQP spec

NO

NO

YES

N/A

Look for queue with name derived from link name, global name space and “true” durability.

If queue exists and there is no consumer, delete queue. Reply with attach having null source Attach the link with the Source set.

If queue exists but there is/are consumer(s), refuse the link with error “resource locked”.

If queue does not exist, refuse the link with error “not found” . TODO: This breaks the AMQP spec 

NO

YES

NO

N/A

Look for queue with name derived from link name (up to “|”), container id and “true” durability.

If queue exists and there is no consumer, delete queue. Reply with attach having null source Attach the link with the Source set.

If queue exists but there is/are consumer(s), refuse the link with error “resource locked”.

If queue does not exist, refuse the link with error “not found”.

NO

YES

YES

N/A

Look for queue with name derived from link name (up to “|”), global name space and “true” durability.

If queue exists and there is no consumer, delete queue. Reply with attach having null source Attach the link with the Source set.

If queue exists but there is/are consumer(s), refuse the link with error “resource locked”.

If queue does not exist, refuse the link with error “not found”.

 TODO: Attach with null Source from an AMQP perspective should not error with resource-locked or not-found. The JMS mapping seems to require this.

Link re-Attach

If link exists and the queue exists see the instructions for the existing queue for SHARED=YES.  
If link exists and the queue does not exist, recreate a queue as described in corresponding instructions above.

...