2016-09-15 17 views
7

Kafka'ya, aşağıda gösterildiği gibi joker karakterli bir desen kullanarak abone oluyorum. Joker, dinamik bir müşteri kimliğini temsil eder.Kafka-python kullanarak çoklu kafka joker karakterleri listesine nasıl abone olunur?

consumer.subscribe(pattern='customer.*.validations') 

Bu iyi çalışır, çünkü müşteri kimliğini konu dizesinden alabilirim. Ancak şimdi benzer bir konuyu biraz farklı bir amaç için dinlemek için işlevselliği genişletmem gerekiyor. Hadi customer.*.additional-validations diyelim. Kodun aynı projede yaşaması gerekiyor çünkü çok fazla işlevsellik paylaşılıyor, ancak sıra türüne göre farklı bir yol alabilmem gerekiyor.

Kafka documentation içinde bir konu dizisine abone olmanın mümkün olduğunu görebiliyorum. Ancak bunlar kodlanmış dizelerdir. Esnekliğe izin veren modeller değil.

>>> # Deserialize msgpack-encoded values 
>>> consumer = KafkaConsumer(value_deserializer=msgpack.loads) 
>>> consumer.subscribe(['msgpackfoo']) 
>>> for msg in consumer: 
...  assert isinstance(msg.value, dict) 

Bu yüzden ikisinin bir bileşimini yapmanın mümkün olup olmadığını merak ediyorum. Tür bu (olmayan çalışma) gibi: KafkaConsumer kodunda

consumer.subscribe(pattern=['customer.*.validations', 'customer.*.additional-validations']) 

cevap

8

, bu

https://github.com/dpkp/kafka-python/blob/68c8fa4ad01f8fef38708f257cb1c261cfac01ab/kafka/consumer/group.py#L717

def subscribe(self, topics=(), pattern=None, listener=None): 
     """Subscribe to a list of topics, or a topic regex pattern 
     Partitions will be dynamically assigned via a group coordinator. 
     Topic subscriptions are not incremental: this list will replace the 
     current assignment (if there is one). 

Yani bir regex oluşturabilir, konuların listesini veya desen destekler | kullanarak VEYA koşuluyla, eşleme için re modülünü dahili olarak kullandığı için, birden çok dinamik konu regex öğesine abone olarak çalışmalıdır.

(customer.*.validations)|(customer.*.additional-validations)

+0

Teşekkür ederiz! Bu sözdizimi harika çalışıyor. –

İlgili konular