ActiveMQ添加商品发送消息
生活随笔
收集整理的這篇文章主要介紹了
ActiveMQ添加商品发送消息
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
添加商品
需要同步索引庫(kù),同步緩存,生成靜態(tài)頁面等等
很多地方,都需要監(jiān)聽添加商品的事件,所以,這里使用Topic模式
方案選擇
方案一:直接寫業(yè)務(wù)邏輯
在商品服務(wù)模塊,添加商品的業(yè)務(wù)邏輯中,添加同步索引庫(kù)的業(yè)務(wù)邏輯
缺點(diǎn):業(yè)務(wù)邏輯耦合度高,業(yè)務(wù)拆分不明確
方案二:模塊之間服務(wù)調(diào)用
在商品服務(wù)模塊,添加商品業(yè)務(wù)邏輯服務(wù)中,調(diào)用索引服務(wù)模塊,添加索引的服務(wù),業(yè)務(wù)邏輯分開,通過服務(wù)調(diào)用
缺點(diǎn):服務(wù)之間耦合度高,服務(wù)的啟動(dòng)有先后順序
方案三:使用消息隊(duì)列
在商品服務(wù)模塊,添加商品業(yè)務(wù)邏輯中,通過消息中間件發(fā)布消息,然后索引模塊中,通過監(jiān)聽接收消息,并添加索引
消息中間件可以使用ActiveMQ、RabbitMQ、kafka
JMSTemplate
配置信息
<!-- 配置JMSTemplate --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory" ref="connectionFactory"/> </bean> <!-- 配置消息的Destination對(duì)象 --> <bean id="test-queue" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg name="name" value="test-queue"></constructor-arg> </bean> <bean id="itemAddtopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg name="name" value="item-add-topic"></constructor-arg> </bean>添加商品
向Activemq發(fā)送,商品添加消息
@Service public class ItemServiceImpl implements ItemService {@Autowiredprivate TbItemMapper itemMapper;@Autowiredprivate TbItemDescMapper itemDescMapper;@Autowiredprivate JmsTemplate jmsTemplate;@Resource(name="itemAddtopic")private Destination destination;@Overridepublic TaotaoResult addItem(TbItem item, String desc) {//生成商品idfinal long itemId = IDUtils.genItemId();//補(bǔ)全item的屬性item.setId(itemId);//商品狀態(tài),1-正常,2-下架,3-刪除item.setStatus((byte) 1);item.setCreated(new Date());item.setUpdated(new Date());//向商品表插入數(shù)據(jù)itemMapper.insert(item);//創(chuàng)建一個(gè)商品描述表對(duì)應(yīng)的pojoTbItemDesc itemDesc = new TbItemDesc();//補(bǔ)全pojo的屬性itemDesc.setItemId(itemId);itemDesc.setItemDesc(desc);itemDesc.setUpdated(new Date());itemDesc.setCreated(new Date());//向商品描述表插入數(shù)據(jù)itemDescMapper.insert(itemDesc);//向Activemq發(fā)送商品添加消息jmsTemplate.send(destination, new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {//發(fā)送商品idTextMessage textMessage = session.createTextMessage(itemId + "");return textMessage;}});//返回結(jié)果return TaotaoResult.ok();}}總結(jié)
以上是生活随笔為你收集整理的ActiveMQ添加商品发送消息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring整合ActiveMQ接收消息
- 下一篇: ActiveMQ添加商品接收消息