Java之品优购课程讲义_day13(6)

商品删除-移除 Solr 索引库记录
5.1 需求分析
通过消息中间件实现在商品删除时也同时移除索引库记录的功能。
5.2 消息生产者(运营商后台)
5.2.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>
5.1.1 代码实现
修改 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,  "删除失败");

}

}
5.1 消息消费者(搜索服务)
5.1.1 配置文件
修改 pinyougou-search-service 的 applicationContext-activemq-consumer.xml

<!--这个是队列目的地,点对点的 文本信息 (删除索引库中记录) -->

<bean  id="queueSolrDeleteDestination" class="org.apache.activemq.command.ActiveMQQueue">

<constructor-arg  value="pinyougou_queue_solr_delete"/>

</bean>

<!-- 消息监听容器(删除索引库中记录) -->

<bean  class="org.springframework.jms.listener.DefaultMessageListenerContainer">

<property  name="connectionFactory"  ref="connectionFactory"  />

<property  name="destination"  ref="queueSolrDeleteDestination"  />

<property  name="messageListener"  ref="itemDeleteListener"  />

</bean>
5.1.1 代码实现
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();
}

}

}

转载于:https://blog.51cto.com/13517854/2298571

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值