Bios.Realtime.Valkey 0.2.0

Bios.Realtime.Valkey

Valkey pub/sub üzerinde kullanıcı başına canlı olay kanalı. Bir taraf PublishAsync ile kullanıcının kanalına olay bırakır; kullanıcının açık bağlantısını tutan replika hangisiyse SubscribeAsync ile dinler ve iletir. Replika sayısı arttıkça değişen bir şey yoktur; dağıtım Valkey'in işidir.

Bilerek "elinden geleni yap" biçiminde çalışır: kalıcı gerçek her zaman veritabanındaki kayıttır, bu kanal yalnız "yeni bir şey var" dürtmesini taşır. Valkey düşerse host çalışmaya devam eder, bağlantı arkada kendiliğinden yeniden kurulur, kaçan dürtmeyi kalıcı kayıt telafi eder.

Bağlama

using Bios.Realtime;   // paket adi degil -- asagidaki Dikkat bolumune bak

// DIKKAT: bu metot IConfiguration degil, HAM baglanti dizesi alir
services.AddBiosNotificationBus("valkey:6379");
// yayınlayan taraf
await bus.PublishAsync(
    userId, new NotificationEvent(NotificationEventTypes.Notification, json), ct);

// dinleyen taraf (örneğin bir SSE ucu)
await foreach (var ev in bus.SubscribeAsync(userId, ct))
{
    // ev.Type  -> "notification" ya da "progress"
    // ev.Json  -> govdenin kendisi, bu paket icine bakmaz
}

Olay tipleri NotificationEventTypes içinde sabit olarak durur: Notification kalıcı bir bildirimin düştüğünü, Progress ise saklanmayan ilerleme bilgisini anlatır.

Yapılandırma

Ayar bölümü yoktur; bağlantı dizesi metoda doğrudan geçirilir. Dizeyi yapılandırmadan okumak çağıranın işidir:

services.AddBiosNotificationBus(
    builder.Configuration.GetConnectionString("Valkey")
        ?? throw new InvalidOperationException("ConnectionStrings:Valkey eksik."));
{
  "ConnectionStrings": {
    "Valkey": "valkey:6379"
  }
}

Dize StackExchange.Redis biçimindedir: sunucu:port, virgülle ayrılmış ek seçeneklerle (valkey:6379,password=...). Boş ya da yalnız boşluktan oluşan bir dize çağrının kendisinde hemen hata verir.

Dikkat

AddBiosNotificationBus ham bağlantı dizesi alır, IConfiguration almaz. Bu, kardeş paketlerdeki alışkanlığa aykırıdır: AddBiosStorage(configuration) ve AddBiosMailTransport(configuration) yapılandırmayı kendileri okur, bu metot okumaz. Yapılandırmayı ona verirsen derlenmez. Sebebi, bağlantı dizesinin tek bir değer olması ve ürünlerin onu çoğu zaman zaten ConnectionStrings altında tutuyor olmasıdır; ama tutarsızlık gerçektir, bilerek çağır.

Yayın başarısız olursa çağıran patlamaz. PublishAsync içindeki Valkey hatasını yakalar, uyarı seviyesinde bir kütük satırı yazar ve normal döner. Yani await bus.PublishAsync(...) çağrısının hatasız dönmesi, olayın karşı tarafa ulaştığı anlamına gelmez. Bu kasıtlıdır: kalıcı kayıt veritabanındadır, kaçan bir dürtmenin bedeli kullanıcının rozeti bir sonraki sayfa yüklemesinde görmesidir — kaybolmuş bir bildirim değil. Bunun karşılığı olarak, kalıcı kaydı yazmadan yalnız buraya yayın yapan bir akış kurma: kaybolan olayı telafi edecek bir şey kalmaz.

Bağlantı kurulamasa bile host açılır. Çoklayıcı AbortOnConnectFail=false ile kurulur; Valkey ayakta değilken de uygulama başlar ve bağlantı arkada denenmeye devam eder. Açılışın Valkey'e bakarak "sağlıklı" demesini bekleme.

Paketin adı Bios.Realtime.Valkey, ad alanı ise Bios.Realtime. using Bios.Realtime.Valkey; yazmak derleme hatası verir. INotificationBus sözleşmesi Valkey'e ait değildir; Valkey yalnız bugünkü gerçeklemesidir.

Abonelik döngüsünü durduran şey iptal belirtecidir. SubscribeAsync belirteç iptal edilene kadar (ya da kanal kapanana kadar) akmaya devam eder ve çıkarken aboneliği kendisi bırakır. SSE ucunda isteğin kendi iptal belirtecini geçir; geçmezsen döngü, tarayıcı bağlantıyı kapattıktan sonra da ayakta kalır.

No packages depend on Bios.Realtime.Valkey.

.NET 10.0

Version Downloads Last updated
0.2.0 74 08/29/2026
0.1.0 2 08/29/2026