关于JMS的问题

04-09-22 Koska
大家好,一直很关注这个问题,但发言还是第一次。希望能得到大家的帮助。

公司最近在做一个项目,要同步若干平台的企业资料,准备用jms实现。

我设计的接口如下:

MsgListener[interface] 消息管理器

客户端必须实现这个接口中的唯一抽象方法:

dealMsg(String actionName, String senderName,Object targetObj, String targetObjType)

UUMFactory[class]统一用户管理工厂

客户使用的总入口,提供下列方法:

run_program(UUMReceiverProxy rp) 启动持久消息订阅,开始接收消息

getReceiverProxy(String senderName, MsgManager msgManager) 取得接收代理

getSendProxy() 取得发送代理

createCommonCompany 创建公共企业对象

UUMReceiverProxy[class]消息接收代理

在消息到达时,执行客户端所实现的MsgListener中的dealMsg方法。

UUMSendProxy[class] 发送消息代理

各平台进行相应操作后调用相应方法。增加,删除,修改企业后分别调用doCompanyAdd,doCompanyDel,doCompanyModi。这些方法会发送相应的消息到jmsServer。

现在一位同事对这种设计提出了疑问,他认为应该在UUMReceiverProxy中建立一个客户端监听器队列,客户端可以自己注册多个监听器到这个队列,当消息到达时,接收代理UUMReceiverProxy应循环执行队列中所有监听器的dealMsg方法。

可我觉得给客户端一个监听器就够了,如果愿意,客户端可以在这个监听器的dealMsg中多些一些代码以进行更多的操作。

我不知道这两种设计思想哪一种更好一些?在客户可能没有更多需求的时候,是否需要设计更复杂的结构,以应付很可能是没有的需求?

Koska
2004-09-22 13:46
下面这个方法写错了,

getReceiverProxy(String senderName, MsgManager msgManager) 取得接收代理

应该是

getReceiverProxy(String senderName, MsgListener msgListener)

猜你喜欢