Существует немного документации по фильтрам корреляции для подписок служебной шины в python.Все примеры имеют дело с фильтрами SQL.Я пытался применить ту же логику, которую видел там, но безрезультатно.
У меня есть простой тестовый пример, в котором я создаю две подписки, каждая с корреляционным фильтром.Один фильтрует по корреляции id = высокий, а другой - по низкому.
_create_subscription(bus_service, 'filter-test-topic', 'highsub')
high_rule = Rule()
high_rule.filter_type = 'CorrelationFilter'
high_rule.correlation_filter = CorrelationFilter(correlation_id='high')
bus_service.create_rule('filter-test-topic', 'highsub', 'HighMessageFilter', high_rule)
bus_service.delete_rule('filter-test-topic', 'highsub', DEFAULT_RULE_NAME)
_create_subscription(bus_service, 'filter-test-topic', 'lowsub')
low_rule = Rule()
low_rule.filter_type = 'CorrelationFilter'
low_rule.filter_expression = CorrelationFilter(correlation_id='low')
bus_service.create_rule('filter-test-topic', 'lowsub', 'LowMessageFilter', low_rule)
bus_service.delete_rule('filter-test-topic', 'lowsub', DEFAULT_RULE_NAME)
Я проверяю эти фильтры, отправляя сообщения с низким значением correlation_id.
for i in range(5):
msg = Message(custom_properties={'correlation_id': 'low'})
bus_service.send_topic_message('filter-test-topic', msg)
Я ожидаю увидеть5 сообщений в 'lowsub' и 0 в 'highsub'.Однако, когда я проверяю портал Azure, обе подписки имеют 0 сообщений.
Правильно ли я создаю фильтры?И правильно ли я устанавливаю correlation_id в сообщении?Я не уверен, что я делаю здесь не так.