
The use of plain SQLAlchemy create_engine in Zaqar bypasses lots of oslo_db features that are associated with its version of create_engine, some useful and some critical. Among favorable behaviors that are added: * The SQLite PRAGMA FOREIGN KEYS call is abstracted into the sqlite_fk flag * The engine is given a pessimistic "ping" event, which emits a "SELECT 1" upon connection checkout which will then recycle the connection if the backing database is no longer connected. As we are using a connection pool, if the database has been restarted, or in the case of MySQL a default timeout of eight hours idle has passed, existing pooled connections will be stale. Upcoming SQLAlchemy 1.2 includes this feature as a simple flag but for now, oslo_db implements the event listener as directed by SQLA docs * The errors raised by the DBAPI, and then wrapped by SQLAlchemy, are further sub-classified. In particular, Zaqar seems to use a lot of IntegrityError catches to detect duplicate entry and foreign key constraint conditions. oslo_db parses these out on a per-database-basis into individual DBDuplicateEntry, DBReferenceError, and other error classes, allowing Zaqar to respond specifically to the sub-class of IntegrityError or allow it to propagate if the condition is unhandled. * checks for MySQL SQL_MODE and best practice driver (pymysql) will emit warnings if these conditions are not met. * Gets Zaqar ready for further oslo.db integration and guides new features into oslo_db, including a potential "mysql timezone" setting Change-Id: I16c3ed89e006e132bbd0295be1dfd0b561b2037c Resolves-bug: https://bugs.launchpad.net/tripleo/+bug/1691951
Team and repository tags
Zaqar
Zaqar is a multi-tenant cloud messaging and notification service for web and mobile developers. It combines the ideas pioneered by Amazon's SQS product with additional semantics to support event broadcasting.
The service features a fully RESTful API, which developers can use to send messages between various components of their SaaS and mobile applications, by using a variety of communication patterns. Underlying this API is an efficient messaging engine designed with scalability and security in mind.
Other OpenStack components can integrate with Zaqar to surface events to end users and to communicate with guest agents that run in the "over-cloud" layer. Cloud operators can leverage Zaqar to provide equivalents of SQS and SNS to their customers.
General information is available in wiki:
The API v2.0 (stable) specification and documentation are available at:
Zaqar Contributor Documentation, the source of which is in
doc/source/
, is available at:
Contributors are encouraged to join IRC
(#openstack-zaqar
channel on
irc.freenode.net
):
Information on how to run unit and functional tests is available at:
http://docs.openstack.org/developer/zaqar/running_tests.html
Information on how to run benchmarking tool is available at:
http://docs.openstack.org/developer/zaqar/running_benchmark.html
Using Zaqar
If you are new to Zaqar and just want to try it, you can set up Zaqar in the development environment.
Using Zaqar in production environment:
Coming soon!
Using Zaqar in development environment:
The instruction is available at:
http://docs.openstack.org/developer/zaqar/devref/development.environment.html
This will allow you to run local Zaqar server with MongoDB as database.
This way is the easiest, quickest and most suitable for beginners.