一个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同时启动多个的.
方案,每个客户端都建立队列,通过配置文件循环,同时要保准一个桌面只能启动一个程序.