看完这篇文章
Service Broker实现发布-订阅(Publish-Subscribe)框架
亲自动手实践了一下,从中发现了一些问题和经验
这个框架的主要思路是 发布方如果想发布一条信息,首先必须向发布队列(PublisherQueue) 发布一条请求消息,告诉发布队列我要发送哪类主题的消息
在发布方向发布队列发送请求消息后,会在队列里面有条记录,最重要的是Conversation这个字段是一个GUID类型的,他代表了每一次会话时候的句柄,通过这个句柄
再发送消息的时候是相当于给发布方的响应消息,这个消息会跑到AuthorQueue队列中去,当然在这里没有用
然后当订阅方想要订阅消息时,首先向 发布队列(PublisherQueue) 发布一条请求订阅消息,告诉发布队列我要订阅那类主题的消息
在订阅方向发布队列发送订阅请求消息后,在队列里产生的 Conversation是发送到订阅队列的句柄
我的思路是,把请求信息和订阅信息分别存放在两个不同的表中Publication和Subscribtion中 ,然后增加一个消息发送表
就是发送方所要发送的消息列表存放到一个表中,这个表的主键是发送句柄,我们首先会循环读取队列中的数据,里面有发送请求和订阅请求
我们通过Subject关联两个表,获得所有的发送句柄,然后读取待发送的消息循环发送到订阅队列中
我们还可以写个实时读取订阅队列的服务程序或控制台程序,来监测每一个消息!