2012-04-26 66 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