您的当前位置:首页正文

day07(前台品牌价格展示筛选+activeMQ应用(整合jms))

2022-03-04 来源:客趣旅游网
模拟京东(7)

课程回顾:

1、 在Linux下solr服务搭建  solr服务运行在tomcat中  Linux下安装tomcat

1、 安装tomcat

2、 测试关闭防火墙service iptables stop chkconfig iptables off  安装solr服务

1、解压,将solr.warcopy到tomcat中 2、手动解压unzip –d 3、解决错误:404、500 4、正常访问

2、 配置IK分词器  解压

 将ik的jar包copy到solr中  配置filed、filedtype节点测试 3、 配置停用词

 将配置文件copy到solr中(classes)  添加停词:服  添加词典:瑜伽服

 修改ik的配置文件:加载词典 4、 spring整合solr

 配置文件通过spring 反射httpsolrserver  测试 5、 商品上架

 修改isShow状态

 将商品信息保存到solr中(用于前台系统的检索)  字段对应:id ---id name---name_ik(自定义) price---price imgUrl----url

brandId ---- brandId(自定义,用于根据品牌过滤)  solrserver.add(doc----solrinputdocument) 6、 前台系统的商品检索

 搭建前台系统url:REStful风格(对静态资源放行)  根据输入的关键字进行检索(数据来源:solr)

1、 需求(条件):关键字检索、关键字高亮、根据价格排序、页 2、 SolrQuery对象封装条件

 setQuery(q)set(设置属性)。

 setHL(true) addHLF addHLPre addHLPost  setSort(filed, order)  setStart setRows

 solrserver.query(solrquery) ---- ResponseQuery -- getResults(普通

结果集)、getHL(高亮结果集)、result.getNumFound()(总条数)  处理结果集--- list

Pagination(pageNo,pageSize,totalCount,list)

复习

1、 框架:struts2、hibernate、spring、springmvc、mybatis  灵活使用  执行的流程  见解 2、 Java基础

 多线程 --- 应用软件的开发(不用写多线程)、基础软件(tomcat、dubbo)

1、 实现多线程方式 2、 状态。  集合

1、 collection接口

2、 list、hashmap(散列的线性结构 3/4自动扩容)、set 特点、数据结构

 I/O

流对象。字符流、字节流。

3、servlet

 生命周期  request  Response

 servletContext  session  cookie

课程计划:

1、 商品品牌信息展示 2、 条件筛选  品牌筛选  价格筛选

3、 ActiveMQ介绍以及使用---MOM

1 商品品牌信息展示

1.1 品牌信息查询

1.2 品牌信息保存到哪---redis

1、 品牌管理:维护品牌信息(存放:mysql数据)----- 从mysql中查询品牌信息--数据存

放在磁盘中--读取数据进行I/O操作---- 多用户访问时mysql效率低。(不选择mysql) 2、 solr:搜索磁盘API操作复杂(不选择solr)

3、 思路:将数据放到内存中(非关系型数据nosql:选择redis:称为内存数据库)redis:

在高并发下读取性能高。

1.3 什么时候将品牌信息保存到redis 1、 保存品牌信息时将信息保存到redis中 2、 修改品牌信息时将信息保存到redis中

1.4 将品牌的哪些信息保存到redis中

1、 品牌名称 2、 品牌id

1.5 选择redis的哪种数据结构

redis:key - value redis的5种数据结构:

 String:set k v set id 1 set name 安踏

 list:应用场景:消息队列(push、pop)秒杀fifo c b a

push:压栈从头or尾 pop:弹栈处理这些消息

 set:特点:聚合操作(交集、并集、差集)、不可有重复元素(访问播客ip)  zset(stored set:设置得分):有序的队列(根据得分排名):排行榜(热点话题、游戏

排名)

 hash:hset key value(map) filed valuie hset brand id name

技术: 1、 概念 2、 原理 3、 使用场景

1.6 将品牌信息保存到redis中

在修改或者保存时。修改是将信息保存到redis中。

修改BrandServiceImpl的更新方法。----- service-product工程。

1.7 品牌信息检索

1.7.1 编写service接口、实现类

接口:

实现类:

1.7.2 更新Controller方法

1.7.3 jsp页面回显

2 条件筛选

根据价格、品牌筛选

2.1 分析

1、 选择品牌时,需要判断是否选择了价格,如果选了价格,查询条件:brandId、price,否

则就是brandId

2、 选择价格是,需要判断是否选了品牌;如果选了品牌,查询:brandId、price,否则就是

price。

2.2 修改js事件

2.3 更新service接口、实现类

接口:

实现类:---- service-solr

2.4 更新controller

3 展示已选条件

3.1 jd的特点

1、 选择后的条件被取消

2、 选择哪个中保存已选的条件map容器保存了已选条件。key-value

3.2 隐藏已选条件

3.3 展现已选条件

3.3.1 从redis中根据id查询品牌名称

3.3.1.1 编写service接口--- service-interface

3.3.1.2 实现类--- service-product

3.3.2 更新Controller方法

3.3.3 jsp页面回显

4 ActiveMQ介绍和使用

4.1 什么是ActiveMQ

消息队列:是在消息的传输过程中保存消息的容器message queue。 ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。 JMS:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 常见的消息中间件: 4.2 相关名词

1、 生产者:将消息发布到mq容器中

2、 消费者:监听mq中的属于自己的消息,并且处理该消息(处理该业务逻辑)。

4.3 工作原理

4.4 模型 4.4.1 p2p

消息1-服务1 消息2-服务2

在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:只有一个消费者将获得消息,生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。一个成功处理的消息都由接收者签收

4.4.2 subsricrite/publish

redis:

1、 指定当个房间(room1)私有(私信)

2、 批量监听(r*)room1、room2 公共消息(公共)

消息1 ---- 容器服务1消费消息1、2 消息2 --- 容器服务2消费消息1、2

发布/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:多个消费者可以获得消息

在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。

5 将ActiveMQ应用到项目中

5.1 本项目的使用场景

5.2 spring整合jsm 5.2.1 生产者配置文件

略。jmsTemplate:发送消息到mq中。

5.2.2 消费者配置文件

略:自定义监听器:监听容器中的消息并消费(处理业务)

5.3 更新生成者(service-product)

5.4 更新消费者(service-solr) 5.4.1 更新searchservice接口

5.4.2 更新searchserviceimpl

5.4.3 自定义消息监听器

因篇幅问题不能全部显示,请点此查看更多更全内容