|
ActiveMQ
项目实战 |
|
作者:韩大帅666 |
|
次浏览
|
|
2020-7-24 |
|
|
编辑推荐: |
本文主要介绍了ActiveMQ
项目实战:添加商品同步到索引库、发送消息、接收消息等相关内容。
来自于csdn,,由火龙果软件Anna编辑、推荐。 |
|
1.添加商品同步到索引库
2.发送消息
manager-server工程中发送消息:当商品添加完成后发送一个TextMessage,包含一个商品id。
@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查询商品信息。
② 映射文件:
<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;
@Override
public void onMessage (Message message) {
try {
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配置监听
|
|
|
次浏览
|
|
|
|