ACE有跨进程/跨机器的Message Queue消息队列吗

vcbear 2005-09-14 06:16:08
如果没有,打算用SV_Message_Queue+共享内存实现一个跨进程的。
用Socket+共享内存实现跨机器的...

如果有,请告诉我 ,省事多了。

除了跨机/进程之外,对Queue的要求如下:
1:可以容纳比较大的消息体,至少几百K吧
2:消息可以有超时控制,超时的消息丢掉
3:可以通过ID指定dequeue某种类型的消息
4:性能高,每秒enqueue/dequeue不低于1000次
5:稳定....
...全文
389 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cber 2005-09-20
  • 打赏
  • 举报
回复
为什么不直接用C++封装一下tuxedo的queue呢(我没有用过这个东东,不过我想它应该会提供C/C++的接口吧)?

可怜的我现在是自己写了一个Priority Queue在用,至于跨进程和跨机器,则是用了一个单独的Windows Service在做
xyun 2005-09-20
  • 打赏
  • 举报
回复
回楼主

ACE应该没有,我是自己实现了一个框架OPI,能覆盖你所有的要求

使用 OS 的 IPC message + shared memory, 性能极高,你提出的容量/速度指标上可以增加2-3个数量级, 透明地使用 socket 支持远程IPC,我用来替代RPC——实在是懒得用繁琐无比,又不愿意受Java / .Net约束,可惜暂时无法公开这个框架。

一般要求能作到:
(1)定义自己的元数据格式(metadata),用来marshall
(2)定义自己的消息格式,尽量设计成XML格式,然后实现binary
(3)使用IPC message 传递消息句柄,确切地讲是capability
(4)使用IPC shared memory 传递消息内容

其实不要求完整实现(1)(2)的话,你完全可以自己写一个针对简单应用任务的MQ,不会很复杂, 但会有很高的销率。

ACE也有改进和提高的空间

vcbear 2005-09-15
  • 打赏
  • 举报
回复
用过tuxedo的话,就大概知道我想要什么样的queue了。ACE_Task的队列不是很符合要求。
darkstar21cn 2005-09-15
  • 打赏
  • 举报
回复
???
ACE_Task<>不是有个队列吗?它不就是一个线程管理类吗?表知道你想要什么。
8过它不能满足你的第3个条件。
孙亖 2005-09-15
  • 打赏
  • 举报
回复
gz
Jagen在路上 2005-09-14
  • 打赏
  • 举报
回复
没有发现有这个功能,所有的Message Queue都没有提供分配器,所以很难做到。

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧