论坛首页 Java版 设计模式

使用activemq实现本地异步消息机制

浏览 325 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-08-07 关键字: 本地异步消息机制
设计模式中有observer模式,但是所有的observer都是同步调用,意味着消息发布者需要等到所有的observer都执行完成才可以返回。很多情况下,这种模式是有用的,解耦了消息发布者和消费者,但是在其他的一些情况下,消息发布者可能对时间比较敏感,如果等到所有的消费者都执行完成,可能需要等到很长时间,影响系统性能。毕竟发布者无法控制消费者接受消息后都作些什么事情。总之,在某些场景下,我们需要一种异步的observer机制,就是发布者发布了消息之后立即返回。
因为有这样的需求,我曾经自己写过一个简单的框架,一个消息队列,一个worker线程池,worker是消费者,并且监听这个消息队列,发布者朝消息队列扔完消息就可以返回了。 能用,但是功能简单,最主要的是么有监控功能,我一直在想是肯定已经有别人已经做过这种事情了,但是网上没有找到很好的这样的框架(SEDA不知道能不能算一个,不太熟悉)。后来我换一种思路,能不能直接将jms server内嵌到应用当中,使用jms来作为本地异步消息机制。然后去看activemq,发现确实是可以嵌入应用程序,这样的话,jms client与jms broker在同一vm中,client可以采用直接方法调用的方式来访问broker, 这样就实现了一个本地的异步消息机制, 同时这个嵌入的jms broker也可以为远程client服务(采用不同的访问协议), :), 个人觉得这个想法不错, 欢迎大家拍砖。
   
时间:2008-08-07
也许还是采用最简单的方式比较好, 直接用一个独立的线程负责接受事件和调用consumer, 采用activemq这种方式有点大炮打蚊子的感觉。 善变,善变!
   
0 请登录后投票
时间:2008-08-11
这种机制很好,通过JMS消息,可以解耦.也便于实现别的消息同步机制,这样做没有任何问题,我们现在开发中,对于工作流的工作任务的发送就是通过异步的方式来实现的.
   
0 请登录后投票
论坛首页 Java版 设计模式

跳转论坛:
JavaEye推荐