57分布式电商项目 - ActiveMQ 实现运营商后台与搜索服务的零耦合(二)
2023-09-11 14:15:41 时间
现在需要通过ActiveMQ消息中间件实现在商品删除时也同时移除索引库记录的功能。
消息生产者(运营商后台)
1)修改 pinyougou-manager-web 工程的 spring-activemq.xml,添加 bean 配置
<!--这个是队列目的地,点对点-->
<bean id="queueSolrDeleteDestination"class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="pinyougou_queue_solr_delete"/>
</bean>
2) 代码实现,修改 GoodsController.java:
@Autowired
private Destination queueSolrDeleteDestination;//用户在索引库中删除记录
/**
* 批量删除
* @param ids
* @return
*/
@RequestMapping("/delete")
public Result delete(final Long [] ids){
try {
goodsService.delete(ids);
jmsTemplate.send(queueSolrDeleteDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createObjectMessage(ids);
}
});
return new Result(true, "删除成功");
} catch (Exception e) {
e.printStackTrace();
return new Result(false, "删除失败");
}
}
消息消费者(搜索服务)
1 )配置文件
修改 pinyougou-search-service 的 applicationContext-activemq-consumer.xml
2)代码实现
com.pinyougou.search.service.impl 包下创建监听类 ItemDeleteListener
/**
* 监听:用于删除索引库中记录
* @author Administrator
* /
@Component
public class ItemDeleteListener implements MessageListener{
@Autowired
private ItemSearchService itemSearchService;
@Override
public void onMessage(Message message) {
try {
ObjectMessage objectMessage= (ObjectMessage)message;
Long[] goodsIds = (Long[]) objectMessage.getObject();
System.out.println("ItemDeleteListener 监听接收到消息..."+goodsIds)
itemSearchService.deleteByGoodsIds(Arrays.asList(goodsIds));
System.out.println("成功删除索引库中的记录");
} catch (Exception e) {
e.printStackTrace();
}
}
}
其它增删改查模式都大同小异,再次不在重复赘述。
相关文章
- 搜索的测试话题
- destoon6.0搜索页熊掌号页面改造技巧【原创】
- LeetCode-808. 分汤【动态规划,概论与统计,记忆化搜索】
- window10系统的电脑有时候搜索不到UDP广播的问题
- SAP WebClient UI删除搜索条件的后台处理,以及max hit的处理逻辑
- 利用Chrome开发者工具分析C4C Opportunity搜索的前端性能
- SAP CRM产品主数据的附件信息在搜索时就已经从后台被读取了
- Atitit 文档全文索引的索引种类 用于文本数据挖掘 搜索 数据分析 目录 1.1. Txt摘要索引。。1 1.2. File placeholder 索引1 1.3. Lucence索引1
- SAP Fiori应用的搜索问题
- 搜索关键字列表变红
- Android 11.0 12.0系统Settings主页去掉搜索框
- 100天精通Python(数据分析篇)——第51天:numpy模块常用函数大全(字符串/数学/算术/统计/排序/搜索函数)
- [LeetCode] 109. 有序链表转换二叉搜索树 ☆☆☆(递归)
- Poseidon 系统是一个日志搜索平台——认证看链接ppt,本质是索引的倒排列表和原始日志数据都存在HDFS,而文档和倒排的元数据都在NOSQL里,同时针对单个filed都使用了独立索引,使用MR来索引和搜索
- 【LeetCode】96.不同的二叉搜索树
- table列表复现框【勾选-搜索-再勾选】功能
- YOLOv5改进主干系列:基于互补搜索技术和新颖架构设计组合MobileNetV3结构作为Backbone主干网络,打造不同的检测器