通过messageQueue传递消息操作,多个客户端消息方案.
2008-08-21 23:34
369 查看
一个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同时启动多个的.
方案,每个客户端都建立队列,通过配置文件循环,同时要保准一个桌面只能启动一个程序.
对于数据使用者来说,发送数据请求,获取数据中心返回的消息.假如使用消息的程序有多个,或单个程序的启动了多个.
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同时启动多个的.
方案,每个客户端都建立队列,通过配置文件循环,同时要保准一个桌面只能启动一个程序.
相关文章推荐
- Android中通过EventBus传递消息数据
- DLL(MFC)通过Window消息向C#程序传递数据
- C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)
- javascrip通过超链接传递中文时应该进行的操作(中文编码)
- 基于TCP实现简单的客户端服务端的消息传递
- Qt/E服务器到客户端的消息传递
- 函数:通过按值传递及传递结构地址操作结构
- ActiveMQ - stomp 通过自定义转换器来支持 Map 消息传递
- IOS iOS本地推送---常用开发中,通过消息传递信息
- js客户端通过node.js实现的Server操作MySQl
- 安卓:ContentProvider之服务端提供接口,客户端通过接口对数据库中的数据进行操作
- android 通过客服端 同步 客户端的touch操作
- c++ 消息传递(通过SendMessage)
- C#(服务器)与Java(客户端)通过Socket传递对象
- mfc通过消息传递参数进行程序间通信
- MFC (通过WM_COPYDATA消息) 进程间通信以及数据传递
- Android 基于Netty的消息推送方案之对象的传递(四)
- Handler消息传递机制——Handler、Loop、MessageQueue的工作原理
- 用python的twisted做个简单游戏服务器原形--客户端消息处理和重组类MessageQueue
- android-消息传递机制Message、MessageQueue、Handler、Looper