转载

ActiveMQ 项目实战

编辑推荐:

本文主要介绍了ActiveMQ 项目实战:添加商品同步到索引库、发送消息、接收消息等相关内容。

来自于csdn,,由火龙果软件Anna编辑、推荐。

1.添加商品同步到索引库

ActiveMQ 项目实战

2.发送消息

manager-server工程中发送消息:当商品添加完成后发送一个TextMessage,包含一个商品id。

ActiveMQ 项目实战

ActiveMQ 项目实战

@Override
 public e3Result addItem (TbItemitem,Stringdesc){
 //1、生成商品id
 final long itemId= IDUtils.genItemId();
 //2、补全TbItem对象的属性
 item.setId(itemId);
 //商品状态,1-正常,2-下架,3-删除
 item.setStatus((byte)1);
 Date date = new Date();
 item.setCreated(date);
 item.setUpdated(date);
 //3、向商品表插入数据
 itemMapper.insert(item);
 //4、创建一个TbItemDesc对象
 TbItemDesc itemDesc= new TbItemDesc();
 //5、补全TbItemDesc的属性
 itemDesc.setItemId(itemId);
 itemDesc.setItemDesc(desc);
 itemDesc.setCreated(date);
 itemDesc.setUpdated(date);
 //6、向商品描述表插入数据
 itemDescMapper.insert(itemDesc);
 //发送一个商品添加消息
 imsTemplate.send (topicDestination, new MessageCreator(){
 @Override
 public Message createMessage (Session session) throws JMSException {
 TextMessagetextMessage = session.createTextMessage (itemId +"");
 return textMessage;
 }
 });
 //7、e3Result.ok()
 return e3Result.ok();
 }
 

3.接收消息

(1) 功能分析:

① 接收消息。需要创建MessageListener接口的实现类。

② 取消息,取商品id。

③ 根据商品id查询数据库。

④ 创建一SolrInputDocument对象。

⑤ 使用SolrServer对象写入索引库。

⑥ 返回成功,返回e3Result。

(2) Dao层

① 根据商品id查询商品信息。

ActiveMQ 项目实战

② 映射文件:

<select id= "getItemById" parameterType="long" resultType="cn.e3mall.common.pojo.SearchItem">
 SELECT
 a.id,
 a.title,
 a.sell_point,
 a.price,
 a.image,
 b.NAME category_name,
 c.item_desc
 FROM
 tb_item a
 JOIN tb_item_cat b ON a.cid = b.id
 JOIN tb_item_desc c ON a.id=c.item_id
 WHERE a.status =1
 AND a.id=#{itemId}
 lt;/select>
 

(3) Service层

参数:商品ID

业务逻辑:

① 根据商品id查询商品信息。

② 创建一SolrInputDocument对象。

③ 使用SolrServer对象写入索引库。

④ 返回成功,返回e3Result。

返回值:e3Result

public e3Result  addDocument(long itemId)  throws Exception {

// 1、根据商品id查询商品信息。

SearchItem searchItem =  searchItemMapper.getItemById(itemId);

// 2、创建一SolrInputDocument对象。

SolrInputDocument document  = new SolrInputDocument();

// 3、使用SolrServer对象写入索引库。

document.addField ("id", searchItem.getId());

document.addField ("item_title",  searchItem.getTitle());

document.addField ("item_sell_point",  searchItem.getSell_point());

document.addField ("item_price",  searchItem.getPrice());

document.addField ("item_image",  searchItem.getImage());

document.addField ("item_category_name",  searchItem.getCategory_name());

document.addField ("item_desc",  searchItem.getItem_desc());

// 5、向索引库中添加文档。

solrServer.add(document);

solrServer.commit();

// 4、返回成功,返回e3Result。

return e3Result.ok();

}

(4) Listener

public class ItemChangeListener  implements MessageListener {

@Autowired

private SearchItemServiceImpl  searchItemServiceImpl;

public void onMessage (Message message) {

TextMessage textMessage = null;

Long itemId = null;

//取商品id

if (message instanceof TextMessage)  {  textMessage = (TextMessage) message;  itemId = Long. parseLong(textMessage.getText());

}

//向索引库添加文档

searchItemServiceImpl.addDocument(itemId);

} catch(Exception e){

e.printStackTrace();

}

}

}

(5) Spring配置监听

ActiveMQ 项目实战

原文  http://www.uml.org.cn/zjjs/202007242.asp?artid=23535
正文到此结束
Loading...