比如说要处理一个订单:
工作人员先把数据敲进界面,我们很多的情况都是主从表在一个界面上,所以一笔单的数据就包括主表的一条记录和从表的多条记录,完成后,用户触发保存动作,然后在客户端将数据一起打包成JMS消息交给weblogic上的MDB来处理(就是这里的异步),不排除在中间加入MOM提供更加强大的消息支持。然后MDB处理这些数据(有可能包括一定的业务逻辑,最后是存入数据库,整个是一个事务),如果失败,事务会滚,且要将数据返回给用户,用户可以在界面上重现这笔资料。成功的话就没必要返回消息。

现在我担心的是单纯用JMS+MDB会造成客户端和服务器端都很难维护,比如说怎么划分Topic和queue就是一大问题(好像MOM有一种像路由一样的功能,一般情况下这样我们就可以改了服务器端的Topic和Queue后只用配置MOM)。还有并发性的控制,安全性...

请楼上的老兄给点意见,谢谢!!!!

不建议你这样做,就上例子来说,我觉得应该用同步来做,比如订票吧:

客户端填写好东西,然后点击客户端的submit,客户通过网络把数据提交给weblogic,由weblogic里面的ejb处理之后将信息返回给客户端,这段时间之内,客户只能等待,而不是可以做其他操作。

从UI设计来说,如果客户点击submit之后,在结果返回之前能够进行其他操作,我觉得不合理。

使用MOM最大的好处就是异步,但是我觉得你这里用异步不合适。

谢谢你的回复!!

但是我们是用C/S的结构,后台数据的更新又是使用CMP,而且客户端和服务器端的跨度会很大,以后很有可能服务器在深圳,客户端在广州,厦门,上海(使用VPN)我们担心响应时间不够理想,会让用户感到不爽。所以我们想用异步的方式处理,用户就不需要等待。

请楼上的说说这种做法的弊端?是弊大于利?
当然我们的客户会清楚他所存储的单不能马上查询到!


另外我听说有这样一种做法,就是当用户提交的数据到达整个架构某一层时(不是数据库和它的缓存),系统就默认这笔数据提交成功,而且用户也能查询出来。不知道是不是真的有这么做的?


还有我想问一下类似IBM MQ这样的东东是不是很贵?因为我们不能肯定是否能从MOM中取得更多的好处,现阶段只能考虑开源的产品。

MQ很贵,呵呵。

举个很简单的例子,比如我订票,我点击submit之后,因为你是异步的,我可以接着做其他事情,万一我接下来的事情吸引了我而忘记订票这事情,可能订票这操作就不能完成了(比如说要我再次确认订票)。

你说的这种情况我们可以用MDB发送消息反馈给客户来解决呀

成功后我们可以提示他或许还需要做什么事情,失败后要把数据重现在客户的屏幕上

为什么一定要用一些商业的MQ呢?我用JBoss4.0的MQ就很好,能满足绝大部分的需求,要是实在搞不定也有源代码。不像那些商业的东东。
对于消息体的类型我倾向于用ObjectMessage,可以将一个标准化的DTO对象封装到ObjectMessage中。