anyblok_bus 1.2.0

Creator: railscoder56

Last updated:

Add to Cart

Description:

anyblok bus 1.2.0

AnyBlok / bus
Improve AnyBlok to add comunication with bus.


Blok
Dependancies
Description



bus

Consume and publish message with
pika and
marshmallow



AnyBlok / Bus is released under the terms of the Mozilla Public License.
See the latest documentation

Contents

AnyBlok / bus
Usage

Declare a new consumer
Publish a message through rabbitmq


Front Matter

Project Homepage
Installation
Unit Test
Script
Dependencies
Author
Contributors
Bugs


CHANGELOG

1.2.0 (2019-06-24)
1.1.0 (2018-09-15)
1.0.0 (2018-06-05)






Usage

Declare a new consumer
In an AnyBlok Model you have to decorate a method with bus_consumer
from anyblok_bus import bus_consumer
from anyblok import Declarations
from .schema import MySchema

@Declarations.register(Declarations.Model)
class MyModel:

@bus_consumer(queue_name='name of the queue', schema=MySchema())
def my_consumer(cls, body):
# do something
The schema must be an instance of marshmallow.Schema, see the marshmallow documentation

Note
The decorated method become a classmethod with always the same prototype (cls, body)
body is the desarialization of the message from the queue by the schema.



Publish a message through rabbitmq
The publication is done by registry.Bus.publish method:
registry.Bus.publish('exchange', 'routing_key', message, mimestype)
if the message have not be send, then an exception is raised
..warning:
A profile must be defined and selected by the AnyBlok configuration **bus_profile**



Front Matter
Information about the AnyBlok / Bus project.

Project Homepage
AnyBlok is hosted on github - the main project
page is at https://github.com/AnyBlok/anyblok_bus. Source code is
tracked here using GIT.
Releases and project status are available on Pypi at
http://pypi.python.org/pypi/anyblok_bus.
The most recent published version of this documentation should be at
http://doc.anyblok-bus.anyblok.org.


Installation
Install released versions of AnyBlok from the Python package index with
pip or a similar tool:
pip install anyblok_bus
Installation via source distribution is via the setup.py script:
python setup.py install
Installation will add the anyblok commands to the environment.


Unit Test
Run the test with nose:
pip install nose
nosetests anyblok_bus/tests


Script
anyblok_bus add console_script to launch worker. A worker consume a queue defined
by the decorator anyblok_bus.bus_consumer:
anyblok_bus -c anyblok_config_file.cfg
..note:: The profile name in the configuration is used to find the correct url to connect to rabbitmq


Dependencies
AnyBlok / Bus works with Python >= 3.4 and later and pika >= 1.0.1. The install process will
ensure that AnyBlok is installed, in addition to other
dependencies. The latest version of them is strongly recommended.


Author
Jean-Sébastien Suzanne


Contributors
Anybox team:

Jean-Sébastien Suzanne
Florent Jouatte

Sensee team:

Julien SZKUDLAPSKI
Jean-Sébastien Suzanne



Bugs
Bugs and feature enhancements to AnyBlok should be reported on the Issue
tracker.

Contents

AnyBlok / bus
Usage

Declare a new consumer
Publish a message through rabbitmq


Front Matter

Project Homepage
Installation
Unit Test
Script
Dependencies
Author
Contributors
Bugs


CHANGELOG

1.2.0 (2019-06-24)
1.1.0 (2018-09-15)
1.0.0 (2018-06-05)







CHANGELOG

1.2.0 (2019-06-24)

Update version to use pika >= 1.0.1
Fixed Multiple consumer on the same model
Refactored bus console script, Added processes parameter on bus_consumer.
The goal is to define processes for one queue, by default all the queues
are in the same process
Add better logging when a queue is missing. If a queue is missing, then
workers won’t start.
Added adapter parameter to transform bus message, the schema attribute
become now a simple kwargs argument give to adapter.
The adapter is not required.

Note
To keep the compatibility, if no adapter is defined with a schema then
the adapter is schema_adapter





1.1.0 (2018-09-15)

Improved logging: for helping to debug the messages
Added create and update date columns
fixed consume_all method. now the method does not stop when an exception is raised
Used marsmallow version >= 3.0.0



1.0.0 (2018-06-05)

add Worker to consume the message from rabbitmq
add publish method to publish a message to rabbitmq
add anyblok_bus.bus_consumer add decorator to défine the consumer

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.