求解决思路、

减肥啊啊啊啊啊 2012-11-06 03:34:10
现在项目会有倆个需求要做、对其思路不知从何下手、


一是: 一个商品修改价格、 通知所有已经关注的消费者、 比如购物网站的卖家修改了价格、已经订单的同学要收到信息

是不是可以采取观察者模式来解决?
模式了解、但是真正用到项目中的时候几乎等于没有、会有并发影响吗、有没有要注意的地方、


二是:已经关注的消费者 可以选定任意时间点来收到通知、比如8点在通知我啊、

感觉类似动态调度似的、没地方下手的感觉、难道我还每一小时遍历数据表?


求些解决思路、谢谢各位了、有遇到类似需求的可以讲讲思路
...全文
321 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
从需求来说,第一个不合理啊。用户已经下订单了,肯定要以他下订单时的价钱付账啊。第二个,当商家修改价格时统一放到一张表里,根据本身系统性能,间隔一定时间来扫描这张表。然后发送通知
ToBeLastOne 2012-11-14
  • 打赏
  • 举报
回复
问题1: 这里感觉不适合用观察者模式,因为客户并不时时在线,你不可能把消息推送到客户那里,一般来说,b/s架框适合客户去拉取数据而不是服务器主动push,也行不能。 解决方法1楼的比较靠谱,在数据库里建一个触发器,修改价格时更新相关状态,等用户登录后去自己拉取价格更新信息。 问题2:
引用 1 楼 liangtu33 的回复:
可以建立一个定时执行任务,比如每天的凌晨3点(在修改价格之后,系统相对闲的时间),进行通知。 如果还要考虑“任意时间”,那需要有字段“被通知时间”,假设为8点,那么用户登录后,查询通知时,只查询被通知时间晚于当前时间的通知。
zhangchao19890805 2012-11-12
  • 打赏
  • 举报
回复
第一个问题:jsp的话可以用轮询或者 tomcat7+javaEE6的推送技术
forgetsam 2012-11-12
  • 打赏
  • 举报
回复
观察者模式?你用C/S模式做的?还是用EJB? JSP/Servlet怎么写观察者模式? 可以借鉴DWR的“推送”模式,说白了就是发送信息量很小的轮询,发现状态改变,返回应该做的响应。 第二个问题也可以,不过因为他们两个本质不一样,所以可以用定时器或者数据库Job来完成
BaronZ 2012-11-12
  • 打赏
  • 举报
回复
问到有点实用的帖子,回复的还是不多啊?估计这里的‘大牛’都是回答简单问题得到花花绿绿的章
ben_2_ben 2012-11-06
  • 打赏
  • 举报
回复
问题一: 商家修改了价格,作为一个发布端,订单使用订阅者(JMS的发布订阅)。 应该是事件监听模型方式实现。 问题二: 如果单纯的使用时间来作为限制的话,没有很好的思路。
王二北 2012-11-06
  • 打赏
  • 举报
回复
1、第一个可以用触发器,当价格改动时.... 2、和楼上一样
fccfcc1234 2012-11-06
  • 打赏
  • 举报
回复
引用 1 楼 liangtu33 的回复:
第二个问题 可以建立一个定时执行任务,比如每天的凌晨3点(在修改价格之后,系统相对闲的时间),进行通知。 如果还要考虑“任意时间”,那需要有字段“被通知时间”,假设为8点,那么用户登录后,查询通知时,只查询被通知时间晚于当前时间的通知。
如果不是做推送只是提示的话感觉这个方法比较好。
fccfcc1234 2012-11-06
  • 打赏
  • 举报
回复
第一个功能首先需要有一张存放了关注信息的对应表。然后商品价格被修改后可以启动一个batch去做通知这个动作。 第二个功能做法其实跟第一个类似,也要一张表,但是存放的是所有延迟通知的信息(比如说什么时候通知,通知的内容,通知谁。。。等等),然后做一个batch监控这张表。 举个例子,比如通知的精度要求是精确到刻(15分),则每15分钟执行一次该batch,把表中符合时间要求但是未发送的通知推送出去。
  • 打赏
  • 举报
回复
To liangtu33 : 谢谢 您的回答、 第一个需求这个功能相当于一个微博了,A发布了一个微博、所有关注A同学的马上得到消息说‘XXX发布了新微博、’ 第二个需求相当于延迟通知功能了、有点类似 Q空间 赠送好友礼物 在设定的时间来送别人生日礼物似的
Jusbie 2012-11-06
  • 打赏
  • 举报
回复
个人认为这个没什么思路不思路的问题,就是一个表结构的设计,通知模块根据服务器性能ajax动态分时段查询显示即可
liangtu 2012-11-06
  • 打赏
  • 举报
回复
第一个问题,自己写代码得了,没必要用观察者模式。
liangtu 2012-11-06
  • 打赏
  • 举报
回复
第二个问题 可以建立一个定时执行任务,比如每天的凌晨3点(在修改价格之后,系统相对闲的时间),进行通知。 如果还要考虑“任意时间”,那需要有字段“被通知时间”,假设为8点,那么用户登录后,查询通知时,只查询被通知时间晚于当前时间的通知。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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