57分布式电商项目 - ActiveMQ 实现运营商后台与搜索服务的零耦合(二)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 57分布式电商项目 - ActiveMQ 实现运营商后台与搜索服务的零耦合(二)

现在需要通过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();
     } 
   } 
 }

其它增删改查模式都大同小异,再次不在重复赘述。

目录
相关文章
|
9月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 9.1.5 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.1.5 (macOS, Linux, Windows) - 分布式搜索和分析引擎
591 0
|
10月前
|
JSON 监控 Java
Elasticsearch 分布式搜索与分析引擎技术详解与实践指南
本文档全面介绍 Elasticsearch 分布式搜索与分析引擎的核心概念、架构设计和实践应用。作为基于 Lucene 的分布式搜索引擎,Elasticsearch 提供了近实时的搜索能力、强大的数据分析功能和可扩展的分布式架构。本文将深入探讨其索引机制、查询 DSL、集群管理、性能优化以及与各种应用场景的集成,帮助开发者构建高性能的搜索和分析系统。
624 0
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
671 3
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
587 14
文生图架构设计原来如此简单之分布式服务
|
存储 安全 Linux
Elasticsearch Enterprise 9.0 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.0 (macOS, Linux, Windows) - 分布式搜索和分析引擎
538 0
|
存储 Linux iOS开发
Elasticsearch Enterprise 8.18 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 8.18 (macOS, Linux, Windows) - 分布式搜索和分析引擎
469 0
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
791 18
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
519 16
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
417 1

热门文章

最新文章