添加商品同步到索引库以及消息机制测试

我们在添加商品时需要与索引库进行同步,这样每添加一个商品索引库就多一个文档,这样做的好处是不用把数据库中的所有数据进行同步,大大提高了性能节约了时间。

我们要做的是当添加商品的时候发送activemq消息,至于发送什么类型的activemq消息则要根据实际应用场景来定,由于添加商品涉及到同步缓存、同步索引库、添加静态页面等操作,也就是一个消息被多个消费者所消费,显然发送topic消息更为合适。

要发送topic消息,就要在activemq的配置文件中做下配置,我们将原来配置的topic做下简单的修改,根据命名有意义原则,我们给起名为"itemAddTopic",给消息起名为"item-add-topic",如下图所示。

taotao-manager-service. applicationContext-activemq.xml

下一步是我们找到添加商品的实现类"ItemServiceImpl",在该类中注入jmsTemplate和Destination,如下图所示。

然后我们找到添加商品的方法,在添加完商品后,发送消息,这里需要考虑一个问题,那就是消息的内容应该是什么?既然是添加商品,消费者肯定是要知道添加的商品是哪个商品,同时本着简单的原则,我们只需要传新增商品的ID即可

上面是发送activemq消息,下面我们再来写下接收消息,接收消息是在taotao-search-service工程,我们先要做的事情是修改Mybatis文件,添加一个根据商品ID来查询商品详情的方法

接着,在接口类中添加更加商品ID查询商品详情的接口

现在我启动的是单机版的solr服务器,因此要保证solr配置文件当前切换到单机版

下面我们需要创建一个监听器类ItemAddMessageListener,在该类中处理同步索引库的逻辑

正如在代码中提到的那样,在添加商品的时候(如下图所示)是涉及到事务的,事务提交之后才能在数据库中查询到商品信息,假如网络不济,造成事务还没提交,接收消息的一端想去查询商品信息,这时显然是查询不到的,为了等待事务提交,采用三次尝试的机制,如上面代码所示。

写完监听器我们再配置下接收的topic(要与taotao-manager-service当中配置的topic一致),以及设置监听器

在启动工程前,我们需要把学习JMail发送邮件时人为添加的异常给删掉

好了,写完了代码,现在我们来测试一下,我们依次启动taotao-manager、taotao-content、taotao-search、taotao-manager-web、taotao-port-web、taotao-search-web工程。启动完之后,我们访问http://localhost:8081来访问淘淘商城管理后台,添加一款商品,这里我添加的是华为P10手机,如下图所示。

添加完商品后,我们到淘淘商城首页进行搜索,看能不能搜索到我们刚才添加的手机,如下图所示,发现可以正常搜索到刚才添加的华为手机!!说明我们的消息机制没问题。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值