def parse_message(self, msg): result = self.unserializer.convert(msg.content.body) if result.message_id in self._seen_messages: debug_message(">>>X", result, "DUPLICATED") return debug_message(">>>>", result) self._seen_messages.set(result.message_id, True, expiration=result.expiration_time) return result
def on_message(self, message): key = (message.recipient.key, message.recipient.route) self.log("Master broker dispatches the message with key: %r", key) if key not in self._slaves: debug_message("X--M", message, "UNKNOWN KEY") self.warning("Don't know what to do, with this message, the key " "is %r, slaves we know: %r", key, self._slaves.keys()) else: debug_message("<--M", message) data = self._serializer.convert(message) d = [s.dispatch(data) for s in self._slaves[key]] return defer.DeferredList(d, consumeErrors=True)
def _publish(self, key, shard, message): assert isinstance(message, BaseMessage), "Unexpected message class" if message.expiration_time: delta = message.expiration_time - time.time() if delta < 0: debug_message("X<<<", message, "EXPIRED") self.log('Not sending expired message. msg=%s, shard=%s, ' 'key=%s, delta=%r', message, shard, key, delta) return serialized = self.serializer.convert(message) content = Content(serialized) content.properties['delivery mode'] = 1 # non-persistent self.log('Publishing msg=%s, shard=%s, key=%s', message, shard, key) if shard is None: debug_message("X<<<", message, "SHARD IS NONE") self.error('Tried to send message to exchange=None. This would ' 'mess up the whole txamqp library state, therefore ' 'this message is ignored') return defer.succeed(None) debug_message("<<<<", message) d = self.channel.basic_publish(exchange=shard, content=content, routing_key=key, immediate=False) d.addCallback(defer.drop_param, self.channel.tx_commit) d.addCallback(defer.override_result, message) return d
def remote_dispatch(self, data): message = self._unserializer.convert(data) debug_message("M-->", message) self._messaging.dispatch(message, outgoing=True)
def on_message(self, message): debug_message("<--S", message) data = self._serializer.convert(message) return self._master.callRemote('dispatch', data)