Topic: 持久性队列的设计???????????

  Print this page

1.持久性队列的设计??????????? Copy to clipboard
Posted by: wendy_yu_2001
Posted on: 2003-07-25 09:42

请问各位大侠,持久性消息队列怎么设计?
是不是队列中的每个消息都要保存在文件或者是数据库中?

谁能给我讲讲消息中间件中能否使用rmi,它与RPC有何区别。
谁又持久性队列的例子请给我一个看看。

2.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: jeez
Posted on: 2003-08-08 16:59

消息在没有被收到之前,需要持久存储到文件系统或数据库。收到之后就删除掉了,主要是为了保证系统当掉也不丢失数据。

3.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: HenryYu
Posted on: 2003-08-19 17:24

想实现持久性肯定是“save”起来了,还有什么好说的,支持jeez的观点

4.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: wendy_yu_2001
Posted on: 2003-09-22 18:09

如果将消息保存起来的话,那么当客户接收到消息的时候,我想要把存储的消息删掉.问题是,我怎么知道用户是否收到 消息?????
请给出具体说明,最好给出代码例子

5.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: coloumn
Posted on: 2003-09-26 10:13

具体说明可不好说:
根据不同的情况、实现方式都会有不同。其实在实现时要掌握的就是你说的:”怎么知道用户是否收到消息“。然后你开动脑筋实现它就行了

6.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: coloumn
Posted on: 2003-09-26 10:20

还是说个基本思想吧:
发送端要保存没有确认收到的消息。而接收端接到一个消息后要记录消息的id(此id是唯一的)。

发送端在没有收到确认消息的时间段中,要重发相同的消息(具体的时间间隔可根据配置确定)。接收端如果发现重复收到相同的消息,应该抛弃,但必须向发送端再次发送确认收到信息。

如果发送端收到确认消息,就删除本地保存的相关消息内容。(当然有可能做日志记录,说明已经发送成功)。

当然,如果你的消息要发送到多个目标,问题就更多了。自己想去吧!

就是这样的。

7.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: yogurtpig
Posted on: 2003-09-28 15:49

我们现在给客户做的是消息收到了数据库里记录消息的确认.因为消息即使传到了,客户如果有意或者无意给删掉,那你去什么地方找确认呢?
另外我们做的可能有点特殊,就是连接到数据库服务器的也并不是消息队列服务器,它本身也是消息队列服务器的一个客户,消息队列服务器的持久性它自己是用文件做的,我们不管.但是我们仍需要实现一个基于数据库的持久性方法.
这种方法在传输的数据重要性非常高的时候特别适用.

8.Re:持久性队列的设计??????????? [Re: wendy_yu_2001] Copy to clipboard
Posted by: wendy_yu_2001
Posted on: 2003-10-07 10:31

对于大家所给的意见,我基本上明白,但是还有一个问题---关于消息的发送和确认不是TCP负责的功能吗。我得连接是tcp连接(socket),本身就是可靠的,那么是不是应该这样认为,每次我发送一个消息,操作系统一定会保证对方正确接收到这个消息。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923