Service Broker: Der Warteschlangenmonitor wird nach der Giftmeldung gelöscht


7

Ich habe überall gesucht und es gibt keine Antwort online. Es gibt eine ähnliche Frage zum Stapelüberlauf, aber sie ist nicht genau dieselbe und hat keine akzeptierte Antwort.

Wenn ich eine Ereignisbenachrichtigung für eine Warteschlange einrichte, wird ein Warteschlangenmonitor erstellt. Wenn der Empfang einer Nachricht aus dieser Warteschlange eine Giftnachricht verursacht, verschwindet der Warteschlangenmonitor. Es ist nicht in "RECEIVE" oder "INACTIVE", es ist nur Tropfen. Und nach dem Aktivieren der Warteschlange mitALTER QUEUE somequeue WITH STATUS = ON; dem Warteschlangenmonitor , wird sie nicht wieder angezeigt, und ich muss die Ereignisbenachrichtigung löschen und neu erstellen, damit die Ereignisbenachrichtigung wieder funktioniert.

Die Frage ist also, ist das beabsichtigt oder nicht? Und nachdem ich die Warteschlange nach der Giftnachricht wieder aktiviert habe, ist es üblich, Ereignisbenachrichtigungen neu zu erstellen.

Vielen Dank!


Ich erinnere mich nicht genau, wie es funktioniert, aber wenn die Behandlung von Giftnachrichten stattfindet und die Warteschlange deaktiviert wird, ist die Aktivierung auch deaktiviert? Wenn ja, wird die Aktivierung beim erneuten Aktivieren der Warteschlange wieder aktiviert? Ich konnte sehen, wo es nicht wäre. Überprüfen Sie sys.service_queues nach dem erneuten Aktivieren der Warteschlange, um festzustellen, ob die Aktivierung aktiviert ist. Wenn nicht, aktivieren Sie es und prüfen Sie, ob Ihr Monitor angezeigt wird.
Ben Thul

Wenn ich die Warteschlange wieder aktiviere, wird der Warteschlangenmonitor nicht wieder aktiviert. Dies ist eine Ereignisbenachrichtigung, keine interne Aktivierung. In sys.services_queues sehen Sie, ob die Aktivierung bei der internen Aktivierung aktiviert ist.

Ich denke, wir senden beide Benachrichtigungen an eine andere Warteschlange, indem wir Ereignisbenachrichtigungen verwenden. Der Unterschied besteht darin, dass Sie diese Nachrichten selbst verarbeiten, während ich sie an den von Microsoft entwickelten externen SSBS-Aktivierungsdienst delegiere. Habe ich recht? ( stackoverflow.com/questions/10299870/… )
Jānis

Wenn Sie einen Warteschlangenmonitor haben, bedeutet dies, dass Sie irgendwo aktiviert sind, unabhängig davon, ob diese automatisch durch die Abfragemeldung oder auf andere Weise erstellt werden. Überprüfen Sie das Bit is_activation_enabled in allen Warteschlangen in Ihrem "guten" Zustand und deaktivieren Sie anschließend Ihre Warteschlange, nachdem Ihr Handler für Giftnachrichten Ihre Warteschlange deaktiviert und verglichen hat. Ich vermute, dass es einen Unterschied geben wird.
Ben Thul

Janis, ich benutze auch externe Aktivierung.
Sergey

Antworten:


1

Wenn eine Transaktion fünfmal zurückgesetzt wird, deaktiviert Service Broker alle Warteschlangen, von denen die Transaktion Nachrichten empfangen hat, selbst wenn die Behandlung von Giftnachrichten deaktiviert ist. Dies würde bedeuten, dass die Ereignisbenachrichtigungen neu erstellt werden. Nehmen Sie also try .. auf und fangen Sie Ihre Giftnachrichten ab. Sie erhalten vier Versuche, bevor SB dies für Sie erledigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.