kombu register_callback 和 on_message 的区别?

register_callback 添加的 func 接受两个参数

from kombu.transport.pyamqp import Message

def callback(body, message: Message):
    logger.debug(type(body))
    logger.debug(message)
    logger.debug(message.body)
    message.ack()

register_callback 添加的 func 接受一个参数

from kombu.transport.pyamqp import Message

def callback(message: Message):
    logger.debug(type(body))
    logger.debug(message)
    logger.debug(message.body)
    message.ack()

相关的代码可见:

kombu/messaging.py

def _receive_callback(self, message):
    accept = self.accept
    on_m, channel, decoded = self.on_message, self.channel, None
    try:
        m2p = getattr(channel, 'message_to_python', None)
        if m2p:
            message = m2p(message)
        if accept is not None:
            message.accept = accept
        if message.errors:
            return message._reraise_error(self.on_decode_error)
        decoded = None if on_m else message.decode()
    except Exception as exc:
        if not self.on_decode_error:
            raise
        self.on_decode_error(message, exc)
    else:
        return on_m(message) if on_m else self.receive(decoded, message)

你可能感兴趣的:(kombu register_callback 和 on_message 的区别?)