A więc ostatnio przeglądaliśmy magistralę usług Azure i jesteśmy nieco zdezorientowani, czy powinniśmy używać nieskończonej pętli do odpytywania kolejki/subskrypcji, czy też powinniśmy używać funkcji wywołania zwrotnego/pompy komunikatów OnMessage. Co zmusza do mniejszej liczby operacji, a tym samym kosztuje mniej?Czy pompa komunikatów Azure Service Bus jest rzeczywiście sterowana zdarzeniami?
Idealnie chcemy systemu opartego na zdarzeniach, więc nie marnujemy operacji i ogólnie jest to o wiele przyjemniejsze podejście.
Moje pytanie brzmi, czy za pomocą zdarzenia OnMessage zdefiniowanego jako "Przetwarza komunikat w sterowanej zdarzeniem pompie komunikatów" rzeczywiście odbywa się zdarzenie?
Jeśli przyjrzeć się tej stronie (QueueClient.OnMessage): https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.queueclient.onmessage.aspx zauważysz uwagę na dole, która stwierdza, że jest to w zasadzie opakowanie wokół nieskończonej pętli, która wywołuje metodę Receive(). To nie brzmi dla mnie bardzo dobrze.
Teraz, jeśli spojrzysz na tę stronę (SubscriptionClient.OnMessage): https://msdn.microsoft.com/en-us/library/azure/dn130336.aspx, ta uwaga nie jest obecna. Czy to samo dotyczy tematów/subskrypcji i kolejek, czy też jest faktycznie sterowane zdarzeniami dla subskrypcji, ale nie dla kolejek?
Dlaczego oni mówią nawet, że jest napędzany przez zdarzenia, kiedy wyraźnie nie jest? Fakt, że uwaga na stronie QueueClient.OnMessage zawiera słowa "nieskończona pętla" i "każda operacja odbierania to zdarzenie rozliczane" jest nieco przerażająca.
Nie martwię się również o to, ile/niewiele to będzie kosztować, jestem bardziej zainteresowany uczynieniem go tak wydajnym, jak to tylko możliwe.
Dzięki, Ada. Wydaje się, że jest tak, jak myślałem, a nie w ogóle. Uważam to za dość dziwne, że wciąż nazywają to zdarzeniem napędzanym zdarzeniami. –
Przy jakiejś warstwie abstrakcji jest sterowana zdarzeniami i wydaje mi się, że świetnie nadaje się do sprawdzania pocisków na materiałach marketingowych. –