nameko中的事件(消息)触发~nameko系列之五

2018-11-13  本文已影响0人  andrew_su_cd

基于事件或消息的处理,是一种编程方法,属于异步处理,与传统的同步编程思路大不一样。nameko的eventhandler事件处理,做的比较优雅,它的优雅源自现在很牛逼的rabbitmq。nameko使用rabbitmq作为消息中间件,自然对基于消息的处理,得心应手。

先上菜,再解释:

class SenderService:
    name = "sender_service"
    dispatcher = EventDispatcher()

       @rpc
    def dispatch_method(self, payload):
        self.dispatcher("message", payload)

       @timer(2)
    def call_dispatcher_method(self):
        self.dispatcher_method({'message': 'hello world'})


class ReceiverService:
    name = "receiver_service"

       @event_handler("sender_service", "message")
    def handle_event(self, payload):
        print("reciever1 just received message from sender_service @ {}:".format(time.ctime()), payload)


class ReceiverService2:
    name = "receiver_service2"

       @event_handler("sender_service", "message")
    def handle_event(self, payload):
        print("receiver2,just received message from sender_service@ {}:".format(time.ctime()), payload)

说明:

基于消息或者事件的编程,是一种非常不错的体验:一是极大的降低应用或功能之间耦合度;二是容易大规模部署。

上一篇下一篇

猜你喜欢

热点阅读