2012-04-26 62 views
1

我想使用ravendb構建警報系統。使用ravendb構建警報系統的最佳實踐

其實我存放圖書如下:

public class Book 
{ 
    public string Id { get; set; } 
    public string Title { get; set; } 
    public string Description {get;set;} 
} 

用戶可以創建一些提醒其匹配的書的標題和描述。

警報定義這樣的:

public class Alert 
{ 
    public string UserId{get;set;} 
    public string Keywords{get;set;} 
} 

當一本書貼,或者一些編輯的匹配,那麼用戶提醒,我什麼(通過電子郵件或類似的東西)來通知用戶。

因此,任何人有最佳實踐,以進行有效的預警系統,而無需通過所有警報每次一本書被張貼或編輯,以獲得匹配的書執行搜索查詢時間循環?

編輯:爲了當書籍發佈或編輯得到通知我用Rhino.ESB,我的問題不是如何獲得通知的書籍更新。但實際上如何有效地將書籍與更新中的警報進行匹配。

編輯:StackOverflow上似乎用在標籤訂閱機制發送用戶與電子郵件相關的論文標籤的問題。關於這一機制的簡要介紹應該是一個開始。任何想法 ?

謝謝。

回答

1

Yoann,

你基本上做了一個反向搜索。

public void Handle(BookUpdated msg) 
{ 
    var book = Session.Load<Book>(msg.BookId); 
    var alerts = Session.Query<Alerts>() 
     .Search(x=>x.Keywords, book.Description) 
     .ToList(); 



    // alert for book 


} 

請注意,您需要正確分頁,並考慮如果書中有很多警報會發生什麼情況。

+0

我想這樣做,但我不確定這是最好的方法。關於分頁,我會遍歷所有頁面,我認爲這不是問題。謝謝,我會走這條路。 – 2012-04-28 06:43:39