NATS Stream Discard Policy

DiscardPolicy опрСдСляСт, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с сообщСниями, ΠΊΠΎΠ³Π΄Π° стрим достиг ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² (MaxMsgs, MaxBytes, MaxAge, MaxMsgsPerSubject). ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π·Π°Π΄Π°Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π»ΠΈΠΌΠΈΡ‚.

Π›ΠΎΠ³ΠΈΠΊΡƒ DiscardPolicy стоит Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ вмСстС с:

  • Π»ΠΈΠΌΠΈΡ‚Π°ΠΌΠΈ стрима (Ρ‡Ρ‚ΠΎ считаСтся Β«ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌΒ»);
  • RetentionPolicy (ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ допускаСтся автоматичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сообщСний).

DiscardOld

БообщСния ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Β«ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старыС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ мСсто для Π½ΠΎΠ²Ρ‹Ρ…Β».

  • ΠŸΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ любого Π»ΠΈΠΌΠΈΡ‚Π°:
    • находят «лишниС» сообщСния (ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, количСству ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ);
    • сначала ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ самыС старыС сообщСния Π² стримС;
    • Π½ΠΎΠ²Ρ‹Π΅ сообщСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ.
  • Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠ΄ΠΎΠ±Π΅Π½ для Π»ΠΎΠ³ΠΎΠ², Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ Π²Π°ΠΆΠ½ΠΎ «послСднСС состояниС», Π° Π½Π΅ полная история.

DiscardNew

НовыС сообщСния ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ, Ссли ΠΈΡ… запись ΠΏΡ€ΠΈΠ²Π΅Π»Π° Π±Ρ‹ ΠΊ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ Π»ΠΈΠΌΠΈΡ‚Π°.

  • ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ записи:
    • Ссли Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сообщСния Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π»ΠΈΠΌΠΈΡ‚Ρ‹ β€” сообщСниС Π½Π΅ сохраняСтся;
    • ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния Π² стримС Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°ΡŽΡ‚ΡΡ.
  • ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сцСнариСв, Π³Π΄Π΅:
    • нСльзя Ρ‚Π΅Ρ€ΡΡ‚ΡŒ ΡƒΠΆΠ΅ записанныС Π΄Π°Π½Π½Ρ‹Π΅;
    • Π»ΡƒΡ‡ΡˆΠ΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΎΠ΄ΡŒΡŽΡΠ΅Ρ€Ρƒ ΠΈ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (retry, backpressure ΠΈ Ρ‚.ΠΏ.).

DiscardNewPerSubject

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ DiscardNew, примСняСмый Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ subject Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ стрима.

  • Π‘Ρ‚Ρ€ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько subject (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ORDERS.*):
    • Π»ΠΈΠΌΠΈΡ‚ MaxMsgsPerSubject Π·Π°Π΄Π°Ρ‘Ρ‚ максимум сообщСний Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ subject;
    • ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ subject:
      • Π½ΠΎΠ²Ρ‹Π΅ сообщСния для этого subject ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ;
      • сообщСния Π΄Ρ€ΡƒΠ³ΠΈΡ… subject ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ.
  • Π£Π΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΆΠΈΠ²ΡƒΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ стримС, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ:
    • Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ стрим ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Β«ΡˆΡƒΠΌΠ½Ρ‹ΠΌΒ» subject;
    • ΠΏΡ€ΠΈ этом Π½Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ subject.