Mixin for publishing events to RabbitMQ as avro datums
Project description
AMQP Publishing Mixin for publishing messages as Avro datum
Installation
sprockets.mixins.avro-publisher is available on the Python Package Index and can be installed via pip or easy_install:
pip install sprockets.mixins.avro-publisher
Requirements
sprockets.mixins.amqp>=1.0.0
Example
This examples demonstrates the most basic usage of sprockets.mixins.avro-publisher
export AMQP_URL="amqp://user:password@rabbitmq_host:5672/%2f"
python my-example-app.py
from tornado import gen
from tornado import web
from sprockets.mixins import avro_publisher
def make_app(**settings):
settings = {'avro_schema_uri_format': 'http://my-schema-repository/%(name)s.avsc'}
application = web.Application(
[
web.url(r'/', RequestHandler),
], **settings)
avro_publisher.install(application)
return application
class RequestHandler(avro_publisher.AvroPublishingMixin, web.RequestHandler):
@gen.coroutine
def get(self, *args, **kwargs):
body = {'request': self.request.path, 'args': args, 'kwargs': kwargs}
yield self.amqp_publish('exchange', 'routing.key', body,
{'content_type': avro_publisher.DATUM_MIME_TYPE,
'type': 'avro-schema-name'})
if __name__ == "__main__":
application = make_app()
application.listen(8888)
logging.basicConfig(level=logging.INFO)
ioloop.IOLoop.current().start()
Source
sprockets.mixins.avro-publisher source is available on Github at https://github.com/sprockets/sprockets.mixins.avro-publisher
License
sprockets.mixins.avro-publisher is released under the 3-Clause BSD license.