2016-03-07 19 views
5

Son zamanlarda rx-java hakkında biraz bilgi okuyorum. Çerçevenin iş parçacıkları arasında bir iletişim sistemi için faturaya uyup uymadığını merak ediyorum. Java'da yazılmış bir REST sunucusu üzerinde çalışıyorum. Bazı kaynaklar PUT/POSTED olduğunda her zaman bir çalışan iş parçacığı havuzu kullanarak bir hesaplama yapmak istiyorum. Bununla birlikte, istekleri izlemek, belki de bazı istatistikleri basmak istiyorum. Temelde Observable olmasını istiyorum, böylece istekleri birden çok Observer s ile esnek bir şekilde ele alabilirim.Bir olay döngüsü için gözlemlenebilir oluşturma

Sorum şu ki, uygun bir Observable nasıl oluşturabilirim? Gördüğüm çoğu rehber, Gözlemciler üzerinde, haritalama vb. Gibi faaliyetlerle ilgilenmektedir. Obervables, çoğunlukla koleksiyonlardan veya tamsayı alanlarından oluşmaktadır. Her halükarda, yaratılan Gözlemcilere yeni değerler getirmek imkansız gibi görünüyor. Görünüşe göre bu esnekliği korumanın tek yolu Observable.create'u kullanmaktır. Ancak, bu oldukça düşük seviyeli görünüyor. Her yeni abone için bir kuyruk listesi uygulamak ve her birine bir synchronized itme yapmak zorunda kalacaktım. Bu gerçekten gerekli mi yoksa rx-java'da uygulanan böyle bir şey mi?

cevap

5

Aradığınız şey bir Subject. Bunlar hem Gözlemci hem de Gözlemci olarak hareket eder. Örneğin, bir ReplaySubject, kendisine gönderilen tüm etkinlikleri tüm abonelere tekrar gönderecektir.

Subject<String> replaySubject = ReplaySubject.create(); 
replaySubject.subscribe(s -> System.out.println(s)); 

// elsewhere... 

replaySubject.onNext("First"); 
replaySubject.onNext("Second"); 
replaySubject.onComplete(); 
İlgili konular