运用消息中间件ActiveMQ
实现运营商后台与搜索服务的零耦合。运营商执行商品审后,向 ActiveMQ 发送消息(SKU 列表),搜索服务从 ActiveMQ 接收到消息并导入到 solr 索引库。
1)pinyougou-manager-web 的 pom.xml,引入依赖:
org.apache.activemq
activemq-client
5.13.4
2)pinyougou-sellergoods-service 工程添加 spring-activemq.xml内容如下:
3)代码实现:
@Autowired
private Destination queueSolrDestination;//用于发送 solr 导入的消息
@Autowired
private JmsTemplate jmsTemplate;
@RequestMapping("/updateStatus")
public Result updateStatus(Long[] ids,String status){
try {
goodsService.updateStatus(ids, status);
//按照 SPU ID 查询 SKU 列表(状态为 1)
if(status.equals("1")){
//审核通过List
itemList = goodsService.findItemListByGoodsIdandStatus(ids, status);//调用搜索接口实现数据批量导入
if(itemList.size()>0){
final String jsonString = JSON.toJSONString(itemList);
jmsTemplate.send(queueSolrDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(jsonString);
}
});
}else{
System.out.println("没有明细数据");
}
}return new Result(true, "修改状态成功");
} catch (Exception e) {
e.printStackTrace();return new Result(false, "修改状态失败");
}
}
消息消费者(搜索服务)
1)修改 pinyougou-search-service ,在 pom.xml 中添加 activemq 依赖
org.apache.activemq
activemq-client
5.13.4
2)添加 spring 配置文件 applicationContext-jms-consumer.xml
关注
打赏