igaofen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一个win项目中用到了Sqlite数据库,由于Sqlite不能同时修改数据库,在修改数据库时,也不能读取数据,写写并发冲突\写读并发异常\读读并发可以.所以在sqlite外部封装了一个数据操作层,其他程序通过messageQueue读写数据库.

 

对于数据使用者来说,发送数据请求,获取数据中心返回的消息.假如使用消息的程序有多个,或单个程序的启动了多个.

 

1)消息队列是先进先出的,必须先把第一个消息取出才能取第二个消息.mq.Receive取到的信息是最旧的信息.

 

2)System.Messaging.Message msg = mq.Receive();mq的队列为空时才阻塞.

while(true)

{

     System.Messaging.Message msg = mq.Receive();

}

将一直运行下去,直到系统内存溢出.

 

2)message Queue的message的成员属性必须是强类型;消息中有dadatable时必须设置dadatable的name值.否则无法xml序列化.

 

3)多个进程同时监控一个队列时,异步接受消息各个进程都会触发吗?

 

MessageQueue的一个队列类似一个Socket的监听端口,多个需要返回值的应用程序可以通过建立多个队列来区分消息,区分发送消息队列和返回消息队列,但是项目是一个服务器端的管理程序,操作客户端是可以通过mstsc同时启动多个的.

 

 

方案,每个客户端都建立队列,通过配置文件循环,同时要保准一个桌面只能启动一个程序.

 

 

 

posted on 2008-08-21 23:34  igaofen  阅读(603)  评论(0编辑  收藏  举报