.商品审核-执行网页静态化
6.1 需求分析
运用消息中间件 activeMQ 实现运营商后台与网页生成服务的零耦合。运营商执行商品审核后,向 activeMQ 发送消息(商品 ID),网页生成服务从 activeMQ 接收到消息后执行网页生成操作。
Java之品优购课程讲义_day13(7)_第1张图片
6.1 消息生产者(运营商后台)
6.1.1 解除耦合
修改 pinyougou-manager-web,移除网页生成服务接口依赖:




com.pinyougou

pinyougou-page-interface

0.0.3-SNAPSHOT


GoodsController.java 中删除调用网页生成服务接口的相关代码

//private  ItemPageService  itemPageService;
//静态页生成

//for(Long  goodsId:ids){

//itemPageService.genItemHtml(goodsId);

//}

6.1.1 准备工作
修改配置文件 spring-activemq.xml,添加配置








6.1.1 代码实现
修改 pinyougou-manager-web 的 GoodsController.java

public  Result  updateStatus(Long[]  ids,String  status){

try {

.......

if(status.equals("1")){//审核通过

........

//静态页生成
for(final  Long  goodsId:ids){ jmsTemplate.send(topicPageDestination,  new 
@Override

public  Message  createMessage(Session  session)  throws
JMSException  {

return  session.createTextMessage(goodsId+"");

}

});

}

}

......

}  catch  (Exception  e)  {

......

}

}
6.3 消息消费者(页面生成服务)
6.3.1 解除 dubbox依赖
(1)修改工程 pinyougou-page-service ,删除 dubbox 相关依赖





com.alibaba

dubbo




org.apache.zookeeper

zookeeper





com.github.sgroschupf

zkclient


(2)修改 applicationContext-service.xml,删除 dubbox 相关配置








(3)修改 ItemPageServiceImpl 类的@Service 注解 为 org.springframework.stereotype.Service
包下的@Service 注解
6.3.1 准备工作
(1)修改 applicationContext-service.xml,添加配置


(2)pom.xml 中引入 activeMQ 客户端的依赖



org.apache.activemq

activemq-client

5.13.4

(3)添加 spring 配置文件 applicationContext-jms-consumer.xml




































6.3.1 代码编写
创建消息监听类 PageListener

@Component

public  class  PageListener  implements  MessageListener  {

@Autowired

private  ItemPageService  itemPageService;

@Override

public  void  onMessage(Message  message)  { TextMessage  textMessage=  (TextMessage)message; try {
String  text  =  textMessage.getText();

System.out.println("接收到消息:"+text);

boolean  b  =  itemPageService.genItemHtml(Long.parseLong(text));

}  catch  (Exception  e)  { e.printStackTrace();
}

}

}