sql >> Databasteknik >  >> RDS >> Sqlserver

Kö i OneWay WCF-meddelanden med Windows Service och SQL Server

Jag är en DBA, så det smakar mitt svar, men det här är vad jag skulle göra:

  1. Om du använder SQL 2005+, använd Service Broker för att lagra meddelanden i databasen istället för att lagra dem i en tabell. Du får en kömekanism med detta, så att du kan bli av med MSMQ. Du kommer också att ha en tabell, men den kommer bara att lagra konversationshandtaget (i huvudsak en pekare till meddelandet) tillsammans med hur många gånger den försökte detta meddelande. Slutligen vill du ha någon form av en "död brevlåda" dit meddelanden som når tröskeln för att försöka igen hamnar.
  2. Gör följande i din meddelandebehandlingskod:
    • Börja en transaktion
    • Ta emot ett meddelande utanför kön
    • Om antalet försök igen är större än tröskeln, flytta det till den döda brevlådan och begå
    • Öka räknaren på bordet för detta meddelande
    • Bearbeta meddelandet
    • Om bearbetningen lyckades, genomför transaktionen
    • Om behandlingen misslyckades lägger du ett nytt meddelande i kön med samma innehåll och utför sedan transaktionen

Observera att det inte finns några planerade återställningar. Återställningar i Service Broker kan vara dåliga; om du återställer 5 gånger utan en lyckad mottagning, kommer kön att inaktiveras för både kö- och urköning. Men du vill fortfarande ha transaktioner för fallet när din meddelandeprocessor dör mitt i behandlingen (dvs. servern kraschar).



  1. Skapa en tabell i MySQL

  2. Hur man byter namn på tabell i MySQL

  3. Vad är MySQL:En översikt

  4. Hur kan jag infoga kolumnkommentarer i PostgreSQL via Python?