Make queues lazy in subscriptions
Make queues lazy on operations with subscriptions, so the user will be able to subscribe to yet unexisting queue. blueprint lazy-queues-in-subscriptions Change-Id: Ib5c25f160aa91525e18e9bbd06b6a48931ddec49
This commit is contained in:
parent
60f9f2fe95
commit
9004a70003
@ -5,3 +5,5 @@
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:glob:
|
:glob:
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
|
*
|
109
specs/newton/lazy-queues-in-subscriptions.rst
Normal file
109
specs/newton/lazy-queues-in-subscriptions.rst
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
..
|
||||||
|
This template should be in ReSTructured text. The filename in the git
|
||||||
|
repository should match the launchpad URL, for example a URL of
|
||||||
|
https://blueprints.launchpad.net/zaqar/+spec/awesome-thing should be named
|
||||||
|
awesome-thing.rst.
|
||||||
|
|
||||||
|
Please do not delete any of the sections in this
|
||||||
|
template. If you have nothing to say for a whole section, just write: None
|
||||||
|
|
||||||
|
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||||
|
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||||
|
|
||||||
|
============================
|
||||||
|
Lazy queues in subscriptions
|
||||||
|
============================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/zaqar/+spec/lazy-queues-in-subscriptions
|
||||||
|
|
||||||
|
Make queues lazy on operations with subscriptions, so the user will be able to
|
||||||
|
subscribe to yet unexisting queue.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Queues are designed to be lazy resources in Zaqar's API v1.1 and API v2 in
|
||||||
|
messaging. That means, for example, that the user can post messages to
|
||||||
|
unexisting queue, and the queue will be automatically created. But now queues
|
||||||
|
do not behave like lazy resources on operations with subscriptions. Before
|
||||||
|
creating a subscription, the user must ensure the queue exists, or Zaqar will
|
||||||
|
send error response with HTTP code 400.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Make queues lazy on operations with subscriptions, so the user will be able
|
||||||
|
to subscribe to yet unexisting queue. Make Zaqar do not send error response
|
||||||
|
on queue creation operation in the case queue does not exists.
|
||||||
|
|
||||||
|
Advantages:
|
||||||
|
|
||||||
|
#. The behavior of API will be more consistent, because after the change
|
||||||
|
queues will be lazy in all situations.
|
||||||
|
#. It will be easier for the user to work with subscriptions. No need to do
|
||||||
|
pre-check for queue existence, or handle 400 error response from Zaqar, or
|
||||||
|
always pre-create queue.
|
||||||
|
#. There will be no need to solve currently existing problem when the queue was
|
||||||
|
deleted, but subscriptions to it are still existing. Problem solving will
|
||||||
|
probably require storage driver code to delete also all subscriptions to
|
||||||
|
a queue, when deleting the queue. It may be very undesirable for the user,
|
||||||
|
because subscriptions will not guarantee to be existing till TTL expiration,
|
||||||
|
and will need to be renewed also after queue delete and queue create
|
||||||
|
operations. Proper solution to this problem will complicate behavior in many
|
||||||
|
ways in both Zaqar and client's code. It will be probably backward
|
||||||
|
incompatible change.
|
||||||
|
|
||||||
|
The change is backward compatible. Client's code should work after the change.
|
||||||
|
|
||||||
|
Drawbacks
|
||||||
|
---------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
Two alternatives:
|
||||||
|
|
||||||
|
#. Keep the current behavior.
|
||||||
|
#. There is opinion to make queues non-lazy resources in all situations like
|
||||||
|
it was in API v1. But it will be backward incompatible change to our API
|
||||||
|
v1.1 and API v2, so maybe make it in the distant future.
|
||||||
|
|
||||||
|
Both of them will require solving the problem about still active subscriptions
|
||||||
|
to a queue that was deleted.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
ubershy
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
Target Milestone for completion:
|
||||||
|
Newton-1
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
#. Remove checks for queue existence on operations with subscriptions from
|
||||||
|
storage drivers.
|
||||||
|
#. Remove the code that is catching ``QueueDoesNotExist`` exception on
|
||||||
|
operations with subscriptions from transport drivers.
|
||||||
|
#. Change functional and unit tests accordingly.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0
|
||||||
|
Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
Loading…
Reference in New Issue
Block a user