Фильтр корреляции служебной шины Python - PullRequest
0 голосов
/ 13 октября 2018

Существует немного документации по фильтрам корреляции для подписок служебной шины в 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 в сообщении?Я не уверен, что я делаю здесь не так.

...