Command bus is a pattern from CQRS. In this pattern we have three components:
Command
: represents the desired action to be done, likeRegisterUserCommand
.CommandHandler
: retrieves the data from the command and executes all the actions to accomplish the command objective. In the previous case creates a new user and saves it do database.CommandBus
: routes the command to the handler
Installation is so easy, you only need to execute
pip install commandbus
Using command is as easy as type
from commandbus import Command, CommandHandler, CommandBus
class SomeCommand(Command):
pass
class SomeCommandHandler(CommandHandler):
def __init__(self):
self.called = False
def handle(self, cmd: Command):
self.called = True
bus = CommandBus()
handler = SomeCommandHandler()
bus.subscribe(SomeCommand, handler)
assert not handler.called
bus.publish(SomeCommand())
assert handler.called
The code is available under the MIT license.