Странное поведение служебной шины Azure - подписка № 2 получает сообщение, а подписка № 1 - нет - PullRequest
0 голосов
/ 04 ноября 2018

У меня очень странные проблемы с подписками на темы служебной шины Azure. Для справки я извлек конфигурации темы служебной шины через service bus explorer и надеясь, что кто-нибудь может указать мне правильное направление здесь. Очень ценю любую помощь, которую я могу получить.

Настройка

У меня есть 1 тема с именем topic2 и две подписки на эту тему topicsub2 и topicsub3.

Вопросы

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

Ниже приведены несколько тестовых сценариев, которые я попытался выяснить, почему это происходит.

  • Я попытался удалить filter из topicsub2 и отправить сообщение. Но это никак не отразилось на сообщениях. Я предполагаю, что если фильтры не применяются, все сообщения по теме будут перенаправлены в подписку.

  • После удаления фильтра я добавил фильтр SQL filter (1=1) по умолчанию обратно в подписку и попытался отправить сообщение снова, оно не сработало. Я попытался отправить 5 сообщений в тему, ни одно из них не появилось в подписке topicsub2, и все были получены topicsub3.

  • Я перезапустил приемник консольного приложения (консольное приложение, которое читает из themesub2) и попытался отправить сообщения снова. На этот раз это сработало.

  • Примерно через 10 минут подписка topicsub2 снова перестала получать сообщения.

Резюме

Это то, где я нахожусь. Мое расследование привело меня к тому, что это поведение является случайным, и в topicsub2 происходит некоторое время простоя, о котором я не знаю. Topicsub3 работает нормально.

Может кто-нибудь, пожалуйста, направить меня в правильном направлении?

Ниже приведены настройки для темы 2, включая две подписки.

<?xml version="1.0" encoding="UTF-8"?>
<Entities xmlns="http://schemas.microsoft.com/servicebusexplorer" serviceBusNamespace="defaultstd">
   <Topics>
      <Topic>
         <DefaultMessageTimeToLive>14.00:00:00</DefaultMessageTimeToLive>
         <AutoDeleteOnIdle>10675199.02:48:05.4775807</AutoDeleteOnIdle>
         <MaxSizeInMegabytes>1024</MaxSizeInMegabytes>
         <RequiresDuplicateDetection>False</RequiresDuplicateDetection>
         <DuplicateDetectionHistoryTimeWindow>00:10:00</DuplicateDetectionHistoryTimeWindow>
         <Path>topic2</Path>
         <EnableBatchedOperations>True</EnableBatchedOperations>
         <SupportOrdering>False</SupportOrdering>
         <EnableFilteringMessagesBeforePublishing>True</EnableFilteringMessagesBeforePublishing>
         <IsAnonymousAccessible>False</IsAnonymousAccessible>
         <Status>Active</Status>
         <UserMetadata />
         <EnablePartitioning>True</EnablePartitioning>
         <EnableExpress>False</EnableExpress>
         <IsReadOnly>False</IsReadOnly>
         <Subscriptions>
            <Subscription>
               <LockDuration>00:00:30</LockDuration>
               <RequiresSession>False</RequiresSession>
               <DefaultMessageTimeToLive>14.00:00:00</DefaultMessageTimeToLive>
               <AutoDeleteOnIdle>10675199.02:48:05.4775807</AutoDeleteOnIdle>
               <EnableDeadLetteringOnMessageExpiration>True</EnableDeadLetteringOnMessageExpiration>
               <EnableDeadLetteringOnFilterEvaluationExceptions>True</EnableDeadLetteringOnFilterEvaluationExceptions>
               <TopicPath>topic2</TopicPath>
               <Name>topicsub2</Name>
               <MaxDeliveryCount>2</MaxDeliveryCount>
               <EnableBatchedOperations>False</EnableBatchedOperations>
               <Status>Active</Status>
               <ForwardTo />
               <ForwardDeadLetteredMessagesTo />
               <UserMetadata />
               <IsReadOnly>False</IsReadOnly>
               <Rules>
                  <Rule>
                     <Filter>
                        <SqlFilter>
                           <SqlExpression>sys.Label NOT IN  ('TestEvent')</SqlExpression>
                           <CompatibilityLevel>20</CompatibilityLevel>
                        </SqlFilter>
                     </Filter>
                     <Action>
                        <EmptyRuleAction />
                     </Action>
                     <Name>$Default</Name>
                     <IsReadOnly>True</IsReadOnly>
                  </Rule>
               </Rules>
            </Subscription>
            <Subscription>
               <LockDuration>00:00:30</LockDuration>
               <RequiresSession>False</RequiresSession>
               <DefaultMessageTimeToLive>14.00:00:00</DefaultMessageTimeToLive>
               <AutoDeleteOnIdle>10675199.02:48:05.4775807</AutoDeleteOnIdle>
               <EnableDeadLetteringOnMessageExpiration>True</EnableDeadLetteringOnMessageExpiration>
               <EnableDeadLetteringOnFilterEvaluationExceptions>True</EnableDeadLetteringOnFilterEvaluationExceptions>
               <TopicPath>topic2</TopicPath>
               <Name>topicsub3</Name>
               <MaxDeliveryCount>2</MaxDeliveryCount>
               <EnableBatchedOperations>False</EnableBatchedOperations>
               <Status>Active</Status>
               <ForwardTo />
               <ForwardDeadLetteredMessagesTo />
               <UserMetadata />
               <IsReadOnly>False</IsReadOnly>
               <Rules>
                  <Rule>
                     <Filter>
                        <SqlFilter>
                           <SqlExpression>sys.Label NOT IN  ('TestEvent')</SqlExpression>
                           <CompatibilityLevel>20</CompatibilityLevel>
                        </SqlFilter>
                     </Filter>
                     <Action>
                        <EmptyRuleAction />
                     </Action>
                     <Name>$Default</Name>
                     <IsReadOnly>True</IsReadOnly>
                  </Rule>
               </Rules>
            </Subscription>
         </Subscriptions>
      </Topic>
   </Topics>
</Entities>
...