C# 在将数据发送到订户之前过滤数据(NServiceBus)

C# 在将数据发送到订户之前过滤数据(NServiceBus),c#,.net,soa,nservicebus,servicebus,C#,.net,Soa,Nservicebus,Servicebus,我有很多客户,当新数据添加到我们的一个DB表时,需要通知他们。 我考虑创建一个服务,该服务每X秒检查一次表,并通知客户机是否存在任何新数据。问题是,每个客户端都有不同的权限,不允许查看所有信息。我曾考虑过使用类似NServiceBus的东西来发布包含新信息的消息,但在发送之前,我需要根据每个客户端的权限过滤信息。过滤需要在发送信息之前完成(我不允许在客户端执行过滤) NServiceBus中是否有对此的内置支持 如果没有,我如何实现这个目标 编辑: 下面是我在评论中写的一个例子: 假设我有一个书

我有很多客户,当新数据添加到我们的一个DB表时,需要通知他们。 我考虑创建一个服务,该服务每X秒检查一次表,并通知客户机是否存在任何新数据。问题是,每个客户端都有不同的权限,不允许查看所有信息。我曾考虑过使用类似NServiceBus的东西来发布包含新信息的消息,但在发送之前,我需要根据每个客户端的权限过滤信息。过滤需要在发送信息之前完成(我不允许在客户端执行过滤)

NServiceBus中是否有对此的内置支持

如果没有,我如何实现这个目标

编辑: 下面是我在评论中写的一个例子: 假设我有一个书库。每个客户都有兴趣收到关于添加到图书馆的新书的即时通知,但每个客户只允许收到关于特定类型的通知。系统应该向所有包含新书信息的客户端发送通知,但每个客户端只应该收到关于其特定类型的通知。出于安全原因,我无法筛选客户端中的数据


谢谢。

一个可能的选择是只允许某些客户订阅他们可以看到的类型。NSB提供IAuthorizeSubscriptions接口,允许您确定允许谁订阅邮件。通过按类别拆分消息,您可以使用授权界面允许/拒绝订阅这些类别的消息。

是否有对类似数据感兴趣的客户端组?或者每个客户都在寻找一个不同的集合?客户和数据部分是否属于同一业务组件(营销与计费)?所有客户都应根据其在广告中的分组接收添加到表中的数据子集。除此之外,客户之间没有其他区别。我将尝试更具体一些:添加到表中的每个实体都有一个group属性,并且每个客户端只允许查看一些组。例如:假设我有一个图书库。每个客户都有兴趣收到关于添加到图书馆的新书的即时通知,但每个客户只允许收到关于特定类型的通知。系统应该向所有包含新书信息的客户端发送通知,但每个客户端只应该收到关于其特定类型的通知。出于安全原因,我无法筛选客户端中的数据。感谢您的评论。。。我考虑过这个选项,但问题是“类型”是动态的,可以动态添加/删除。我认为您必须根据自定义条件(本质上是消息检查器)模拟发布功能和调度(Bus.Send())。为了方便起见,您可以将其封装到基类中。您可以使用与NSB相同的方法,查询存储(通常是具有单个表的DB)。他们都可以订阅同一条消息,你只需要自己先过滤掉就行了。我明白你的意思,但我似乎找不到如何查询suscribers存储(除非你说的是用框架查询)。您能给出一个代码示例吗?当然,您可以使用该框架,只需向容器请求一个ISubscriptionStorage实例,其内容类似于s=Bus.Builder.Build()。然后可以调用s.GetSubscribersFormMessage()。。。