十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)怎么解析ActiveMQ消息隊(duì)列技術(shù)融合Spring過程,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是專業(yè)的遼陽縣網(wǎng)站建設(shè)公司,遼陽縣接單;提供做網(wǎng)站、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行遼陽縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
一、業(yè)務(wù)邏輯
我想在修改一個(gè)物品的狀態(tài)時(shí),同時(shí)發(fā)送廣播,給對(duì)應(yīng)的監(jiān)聽器去實(shí)現(xiàn),此商品存儲(chǔ)到solr中,同時(shí)通過網(wǎng)頁靜態(tài)模板生成一個(gè)當(dāng)前物品的詳情頁面,此時(shí)用到了廣播機(jī)制
當(dāng)我刪除一個(gè)商品時(shí),發(fā)送一個(gè)廣播,給對(duì)應(yīng)的監(jiān)聽器,同時(shí)刪除solr中對(duì)應(yīng)的物品。
廣播機(jī)制:必須要同時(shí)在線,才能接收我的消息
使用消息中間件需要導(dǎo)入配置文件
發(fā)布廣播:
if ("1".equals(status)){ jmsTemplate.send(topicPageAndSolrDestination, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage textMessage = session.createTextMessage(String.valueOf(id)); return textMessage; } });}
監(jiān)聽器1,將當(dāng)前商品存入solr中:操作solr的服務(wù)器配置文件
監(jiān)聽器類
public class ItemSearchListener implements MessageListener { @Autowired private SearchService searchService; @Autowired private ItemDao itemDao; @Override public void onMessage(Message message) { //獲取生產(chǎn)者發(fā)布的廣播,往solr中添加庫存列表 ActiveMQTextMessage atm = (ActiveMQTextMessage) message; try { //獲取廣播中的數(shù)據(jù)。 Long goodsId = Long.valueOf(atm.getText()); //通過傳過來的商品id去查詢庫存表 ItemQuery query = new ItemQuery(); ItemQuery.Criteria criteria = query.createCriteria(); criteria.andGoodsIdEqualTo(goodsId); //查詢對(duì)應(yīng)商品id的庫存表 List
監(jiān)聽器類2:配置文件
監(jiān)聽器類2:生成靜態(tài)網(wǎng)頁模板
public class PageListener implements MessageListener { @Autowired private CmsService cmsService; @Override public void onMessage(Message message) { ActiveMQTextMessage atm = (ActiveMQTextMessage) message; try { Long goodsId = Long.valueOf(atm.getText()); Map
點(diǎn)對(duì)點(diǎn)
當(dāng)我刪除商品時(shí),我需要對(duì)應(yīng)的服務(wù)進(jìn)行刪除solr中庫存信息,添加和刪除使用的是同一個(gè)服務(wù)中,使用的是上面的配置文件
//發(fā)布廣播, @Autowired private ActiveMQTopic topicPageAndSolrDestination;//在修改的代碼方法中來廣播發(fā)布當(dāng)前商品的idif (ids.length>0) { jmsTemplate.send(queueSolrDeleteDestination, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage textMessage = session.createTextMessage(String.valueOf(ids)); return textMessage; } }); }
#執(zhí)行刪除solr中庫存信息public class ItemDeleteListener implements MessageListener { @Autowired private SearchService searchService; @Override public void onMessage(Message message) { ActiveMQTextMessage atm = (ActiveMQTextMessage) message; try { Long goodsId = Long.valueOf(atm.getText()); searchService.deleteById(goodsId); } catch (JMSException e) { e.printStackTrace(); } }}
關(guān)于怎么解析ActiveMQ消息隊(duì)列技術(shù)融合Spring過程就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。