Добавление критериев фильтра в подписки служебной шины Azure - PullRequest
0 голосов
/ 21 мая 2019

Я использую Azure Service Bus Explorer для управления подписками на существующие темы Azure Service Bus.Теперь у нас есть новая тема, которая будет получать сообщения из нескольких исходных систем.Исходя из исходной системы мне нужно создавать разные подписки.Ниже приведены примеры сообщений, которые мы получаем

Сообщение 1:

{
  "entity": {
    "id": "20190501",
    "source": "system1",
    "body": "{\r\n  \"Addressid\": \"74C9\",\r\n  \"Start\": \"2016-07-17T21:06:10.983\",\r\n  \"OrgID\": \"7204055\",\r\n  \"Email\": \"test@gmail.com\",\r\n  \"DeptID\": 998\r\n}",
    "createDate": "2019-05-16T12:47:52.4658011Z",
    "isDeleted": false
  },
  "operation": "POST"
}

Сообщение 2:

{
  "entity": {
    "id": "20190501",
    "source": "system2",
    "body": "{\r\n  \"AC_ID\": \"74C9\",\r\n  \"Name\": \"Name1\",\r\n  \"InventoryID\": \"4055\",\r\n  \"OtherID\": 998\r\n}",
    "createDate": "2019-05-16T12:47:52.4658011Z",
    "isDeleted": false
  },
  "operation": "POST"
}

Мне нужно создать две подписки с условием фильтра

Subscription1: with filter as "source": "system1"

Subscription2: with filter as "source": "system2"

Пожалуйста, помогите мне исправить выражение фильтра для вышеуказанных подписок служебной шины, которое мне нужно создать с помощью обозревателя служебной шины.

1 Ответ

1 голос
/ 21 мая 2019

Подписки Azure Service Bus работают только с заголовками / свойствами сообщений.Вы можете иметь либо логические, корреляционные или SQL-фильтры .SQLFilter class реализует фильтрацию, которая выходит за рамки простого сравнения, а синтаксис основан на языке SQL.

Например, "user.source='system1'" или "user.source in ('system1', 'system2')"

В вашем сценарии я бы использовал корреляционный фильтр только потому, что нет необходимости в сложности фильтра SQL.Кроме того, вы заинтересованы в подписках, каждая из которых имеет отдельное значение, используемое для фильтрации сообщений.Вы можете найти пример в этой записи .

Независимо от того, используете ли вы фильтр корреляции SQL, фильтрация может выполняться только по свойствам.Вам нужно будет преобразовать значение «source» из тела вашего сообщения в один из заголовков, системный или пользовательский заголовок.

Чтобы увидеть темы в действии, есть несколько официальных примеров:

...