日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActiveMQ的介绍及使用实例.

發布時間:2024/8/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ的介绍及使用实例. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天就來說下 這個項目中使用ActiveMQ的情況, MQ: message queue, 顧名思義就是消息隊列的意思.?


一: 使用場景:?

消息隊列在大型電子商務類網站,如京東、淘寶、去哪兒等網站有這深入的應用,隊列的主要作用是消除高并發訪問高峰,加快網站的響應速度。在不使用消息隊列的情況下,用戶的請求數據直接寫入數據庫,在高并發的情況下,會對數據庫造成巨大的壓力,同時也使得系統響應延遲加劇。在使用隊列后,用戶的請求發給隊列后立即返回(當然不能直接給用戶提示訂單提交成功,京東上提示:您“您提交了訂單,請等待系統確認”),再由消息隊列的消費者進程從消息隊列中獲取數據,異步寫入數據庫。由于消息隊列的服務處理速度遠快于數據庫,因此用戶的響應延遲可得到有效改善。

那么在babasport這個項目中, 我們可以在上架的時候使用消息隊列的模式:
我們之前在點擊一款商品上架的時候, 我們需要分成2步, 第一: 更新商品表中該商品的上架狀態. 第二: 將該商品信息保存到Solr服務器中. ?那么如果我們使用了消息隊列后, 第二步就可以使用發送message來異步完成.

消息隊列可以接收消息和?發送消息

消息隊列類型:

隊列:一對一聊天 ?私聊 ?QQ

主題(訂閱模式):一對多聊天 ?群聊 ?QQ

名詞解釋:?

?

?二, 代碼原型
ActiveMQ需要部署到Linux系統下, 這里就不再做概述.
這里也是tar包, 導入到linux下直接解壓啟動即可, 前面已經有過很多博文講Linux下一些常用軟件的安裝步驟.


上架代碼原型:
項目構件圖:

未使用ActiveMQ前ProductServiceImpl.cs:

1 //上架 2 public void isShow(Long[] ids){ 3 Product product = new Product(); 4 product.setIsShow(true); 5 for (final Long id : ids) { 6 //上下架狀態 7 product.setId(id); 8 productDao.updateByPrimaryKeySelective(product); 9 10 //這個地方的代碼應該在babasport-solr中寫, 現在使用ActiveMQ進行遷移. 11 //TODO 保存商品信息到Solr服務器 12 SolrInputDocument doc = new SolrInputDocument(); 13 //ID 14 doc.setField("id", id); 15 //名稱 16 Product p = productDao.selectByPrimaryKey(id); 17 doc.setField("name_ik", p.getName()); 18 //圖片URL 19 doc.setField("url", p.getImgUrls()[0]); 20 //品牌 ID 21 doc.setField("brandId", p.getBrandId()); 22 //價格 sql查詢語句: select price from bbs_sku where product_id = ? order by price asc limit 1 23 SkuQuery skuQuery = new SkuQuery(); 24 skuQuery.createCriteria().andProductIdEqualTo(id); 25 skuQuery.setOrderByClause("price asc"); 26 skuQuery.setPageNo(1); 27 skuQuery.setPageSize(1); 28 List<Sku> skus = skuDao.selectByExample(skuQuery); 29 doc.setField("price", skus.get(0).getPrice()); 30 //...時間等 剩下的省略 31 32 try { 33 solrServer.add(doc); 34 solrServer.commit(); 35 } catch (Exception e) { 36 // TODO Auto-generated catch block 37 e.printStackTrace(); 38 } 39 40 41 42 43 //TODO 靜態化 44 } 45 }

上面的代碼 除了更改本來就該更改的商品狀態信息外, 還去見商品信息保存到了Solr服務器中了. 這里我們使用ActiveMQ進行改造:?
使用ActiveMQ后的ProductServiceImpl.cs:

1 //上架 2 public void isShow(Long[] ids){ 3 Product product = new Product(); 4 product.setIsShow(true); 5 for (final Long id : ids) { 6 //上下架狀態 7 product.setId(id); 8 productDao.updateByPrimaryKeySelective(product); 9 10 //發送商品ID到ActiveMQ即可. 11 jmsTemplate.send(new MessageCreator() { 12 13 @Override 14 public Message createMessage(Session session) throws JMSException { 15 16 return session.createTextMessage(String.valueOf(id)); 17 } 18 }); 19 20 //TODO 靜態化 21 } 22 }

接著就是配置消息發送方(JMS生產者) mq.xml:

1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 8 xsi:schemaLocation="http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 12 http://www.springframework.org/schema/context 13 http://www.springframework.org/schema/context/spring-context-4.0.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 16 http://www.springframework.org/schema/tx 17 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 18 http://www.springframework.org/schema/task 19 http://www.springframework.org/schema/task/spring-task-4.0.xsd 20 http://code.alibabatech.com/schema/dubbo 21 http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 22 23 24 <!-- 配置Spring 來管理MQ消息隊列 , 連接ActiveMQ--> 25 <!-- 連接工廠, 此工廠由Apache提供 --> 26 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 27 <!-- 連接地址 28 在網頁端訪問是:http://192.168.200.128:8161, 但是這里是tcp連接, 端口號是61616 29 --> 30 <property name="brokerURL" value="tcp://192.168.200.128:61616"/> 31 <!-- 設置用戶名及密碼 --> 32 <property name="userName" value="admin"></property> 33 <property name="password" value="admin"></property> 34 </bean> 35 36 <!-- 配置連接池管理工廠 --> 37 <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean"> 38 <!-- 注入工廠 --> 39 <property name="connectionFactory" ref="activeMQConnectionFactory"></property> 40 <!-- 設置最大連接數 --> 41 <property name="maxConnections" value="5"></property> 42 </bean> 43 44 <!-- 把上面的工廠交給Spring管理 --> 45 <bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 46 <!-- 注入上面的工廠 --> 47 <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"></property> 48 </bean> 49 50 <!-- 使用Spring提供的jmsTemplate模板來操作ActiveMQ --> 51 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 52 <!-- 注入Spring單例工廠 --> 53 <property name="connectionFactory" ref="singleConnectionFactory"></property> 54 <!-- 設置默認的目標管道 --> 55 <property name="defaultDestinationName" value="pId"/> 56 </bean> 57 </beans>

配置說明: 這里是首先構建一個MQ的連接工廠, 只要ActiveMQ啟動后 就可以這樣構建連接了. 配置登錄的用戶名和和密碼.
接著就是配置連接池, 把連接工廠交給連接池去管理. 這些都是Apache廠商提供的.?
接著就是再將連接池交由Spring管理.?
最后我們再來配置一個jmsTemplate模板來操作ActiveMQ, 這個類似于jdbcTemplate模板. 而且我們這個里面注入了一個默認的管道, 也就是productId, 因為我們現在是 傳遞消息一一去對應, 關于怎么對應 ?就是依賴于這個管道.


接下來我們就看下消息的接收方(JMS消費者)的一些東西:
消費者的目錄結構:(Solr)


Solr項目中的ActiveMQ配置文件mq.xml:

1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 8 xsi:schemaLocation="http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 12 http://www.springframework.org/schema/context 13 http://www.springframework.org/schema/context/spring-context-4.0.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 16 http://www.springframework.org/schema/tx 17 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 18 http://www.springframework.org/schema/task 19 http://www.springframework.org/schema/task/spring-task-4.0.xsd 20 http://code.alibabatech.com/schema/dubbo 21 http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 22 23 24 <!-- 配置Spring 來管理MQ消息隊列 , 連接ActiveMQ--> 25 <!-- 連接工廠, 此工廠由Apache提供 --> 26 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 27 <!-- 連接地址 28 在網頁端訪問是:http://192.168.200.128:8161, 但是這里是tcp連接, 端口號是61616 29 --> 30 <property name="brokerURL" value="tcp://192.168.200.128:61616"/> 31 <!-- 設置用戶名及密碼 --> 32 <property name="userName" value="admin"></property> 33 <property name="password" value="admin"></property> 34 </bean> 35 36 <!-- 配置連接池管理工廠 ,由Apache提供.--> 37 <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean"> 38 <!-- 注入工廠 --> 39 <property name="connectionFactory" ref="activeMQConnectionFactory"></property> 40 <!-- 設置最大連接數 --> 41 <property name="maxConnections" value="5"></property> 42 </bean> 43 44 <!-- 把上面的工廠交給Spring管理 --> 45 <bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 46 <!-- 注入上面的工廠 --> 47 <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"></property> 48 </bean> 49 50 <!-- 使用Spring提供的jmsTemplate模板來操作ActiveMQ --> 51 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 52 <!-- 注入Spring單例工廠 --> 53 <property name="connectionFactory" ref="singleConnectionFactory"></property> 54 <!-- 設置默認的目標管道 --> 55 <property name="defaultDestinationName" value="pId"/> 56 </bean> 57 58 <!-- 實例化一個監聽到消息后 處理此消息的類 --> 59 <bean id="customMessageListener" class="cn.itcast.core.service.message.CustomMessageListener"/> 60 61 <!-- 配置實時監聽器 --> 62 <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 63 <!-- 配置工廠, 需要配置spirng的工廠 --> 64 <property name="connectionFactory" ref="singleConnectionFactory"/> 65 <!-- 設置監聽的目標 --> 66 <property name="destinationName" value="pId"/> 67 <!-- 監聽后獲取消息的類, 接收監聽到的消息 --> 68 <property name="messageListener" ref="customMessageListener"></property> 69 </bean> 70 </beans>

我們來說下 和上面配置不同的地方, 我們在這里配置了一個監聽器, 因為接收到 JMS 生產者發過來的消息后我們需要有個監聽器去監聽且 將監聽到的消息拿過來處理.
接下來看看監聽器的處理方法做了些什么事情:?
CustomMessageListener.java:

1 /* 2 * 接收MQ中的消息 3 */ 4 public class CustomMessageListener implements MessageListener{ 5 @Autowired 6 private SearchService searchService; 7 8 @Override 9 public void onMessage(Message message) { 10 //先將接收到的消息強轉為ActiveMQ類型的消息 11 //因為在消息發送方那邊傳遞的是Text類型的消息對象, 所以需要轉成ActiveMQTextMessage 12 ActiveMQTextMessage amtm = (ActiveMQTextMessage)message; 13 try { 14 String id = amtm.getText(); 15 System.out.println("接收到的ID:"+id); 16 searchService.insertProductToSolr(Long.parseLong(id)); 17 } catch (JMSException e) { 18 // TODO Auto-generated catch block 19 e.printStackTrace(); 20 } 21 }

因為我們接收到的是string類型的文本, 所以這里我們直接將接收到的消息轉換為ActiveMQText類型, 然后通過getText去得到傳遞過來的id, 然后我們就可以通過這個productId去做相應的操作了.?

接下來就看保存商品信息到Solr服務器的邏輯:
SearchServiceImpl.java:

1 //保存商品信息到Solr服務器中, 通過ActiveMQ 2 public void insertProductToSolr(Long productId){ 3 //TODO 保存商品信息到Solr服務器 4 SolrInputDocument doc = new SolrInputDocument(); 5 //ID 6 doc.setField("id", productId); 7 //名稱 8 Product p = productDao.selectByPrimaryKey(productId); 9 doc.setField("name_ik", p.getName()); 10 //圖片URL 11 doc.setField("url", p.getImgUrls()[0]); 12 //品牌 ID 13 doc.setField("brandId", p.getBrandId()); 14 //價格 sql查詢語句: select price from bbs_sku where product_id = ? order by price asc limit 1 15 SkuQuery skuQuery = new SkuQuery(); 16 skuQuery.createCriteria().andProductIdEqualTo(productId); 17 skuQuery.setOrderByClause("price asc"); 18 skuQuery.setPageNo(1); 19 skuQuery.setPageSize(1); 20 List<Sku> skus = skuDao.selectByExample(skuQuery); 21 doc.setField("price", skus.get(0).getPrice()); 22 //...時間等 剩下的省略 23 24 try { 25 solrServer.add(doc); 26 solrServer.commit(); 27 } catch (Exception e) { 28 // TODO Auto-generated catch block 29 e.printStackTrace(); 30 } 31 }

這樣就比較明朗了, ActiveMQ 隊列就是這樣來實現的.?

====================接下來還會有 ActiveMQ 訂閱者模式的示例, 這里只是生產者發送消息給單個消費者, 下次還會更新生產者發送消息給多個消費者.

?2016/09/04 20:32 更新
上面已經說了 消息的隊列模式, 及點對點發送消息, 那么接下來就來說下 消息的一對多模式, 也就是 發布/訂閱模式.
項目原型: 當商品上架后(babasport-product), 發送消息id給solr(babasport-solr)來將商品信息保存到solr服務器和cms(babasport-cms)來對商品詳情頁面做頁面靜態化.

===================
babasport-product:
結構圖:

babasport-product下的項目結構圖:


ProductServiceImpl.java中的上架:

1 @Autowired 2 private JmsTemplate jmsTemplate; 3 4 //上架 5 public void isShow(Long[] ids){ 6 Product product = new Product(); 7 product.setIsShow(true); 8 for (final Long id : ids) { 9 //上下架狀態 10 product.setId(id); 11 productDao.updateByPrimaryKeySelective(product); 12 13 //發送商品ID到ActiveMQ即可. 14 jmsTemplate.send(new MessageCreator() { 15 16 @Override 17 public Message createMessage(Session session) throws JMSException { 18 19 return session.createTextMessage(String.valueOf(id)); 20 } 21 }); 22 } 23 } View Code

mq.xml:

1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 8 xsi:schemaLocation="http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 12 http://www.springframework.org/schema/context 13 http://www.springframework.org/schema/context/spring-context-4.0.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 16 http://www.springframework.org/schema/tx 17 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 18 http://www.springframework.org/schema/task 19 http://www.springframework.org/schema/task/spring-task-4.0.xsd 20 http://code.alibabatech.com/schema/dubbo 21 http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 22 23 24 <!-- 配置Spring 來管理MQ消息隊列 , 連接ActiveMQ--> 25 <!-- 連接工廠, 此工廠由Apache提供 --> 26 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 27 <!-- 連接地址 28 在網頁端訪問是:http://192.168.200.128:8161, 但是這里是tcp連接, 端口號是61616 29 --> 30 <property name="brokerURL" value="tcp://192.168.200.128:61616"/> 31 <!-- 設置用戶名及密碼 --> 32 <property name="userName" value="admin"></property> 33 <property name="password" value="admin"></property> 34 </bean> 35 36 <!-- 配置連接池管理工廠 --> 37 <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean"> 38 <!-- 注入工廠 --> 39 <property name="connectionFactory" ref="activeMQConnectionFactory"></property> 40 <!-- 設置最大連接數 --> 41 <property name="maxConnections" value="5"></property> 42 </bean> 43 44 <!-- 把上面的工廠交給Spring管理 --> 45 <bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 46 <!-- 注入上面的工廠 --> 47 <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"></property> 48 </bean> 49 50 <!-- 使用Spring提供的jmsTemplate模板來操作ActiveMQ --> 51 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 52 <!-- 注入Spring單例工廠 --> 53 <property name="connectionFactory" ref="singleConnectionFactory"></property> 54 <!-- 設置默認的目標管道 --> 55 <property name="defaultDestinationName" value="pId"/> 56 <!-- 默認是隊列模式, 可改為主題, 發布模式 publish subject --> 57 <property name="pubSubDomain" value="true"/> 58 </bean> 59 </beans> View Code

這里面的最大的變化就是將消息發布模式改為了: publish subject.

============================================
babasport-solr:

mq.xml配置文件:

1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 8 xsi:schemaLocation="http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 12 http://www.springframework.org/schema/context 13 http://www.springframework.org/schema/context/spring-context-4.0.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 16 http://www.springframework.org/schema/tx 17 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 18 http://www.springframework.org/schema/task 19 http://www.springframework.org/schema/task/spring-task-4.0.xsd 20 http://code.alibabatech.com/schema/dubbo 21 http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 22 23 24 <!-- 配置Spring 來管理MQ消息隊列 , 連接ActiveMQ--> 25 <!-- 連接工廠, 此工廠由Apache提供 --> 26 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 27 <!-- 連接地址 28 在網頁端訪問是:http://192.168.200.128:8161, 但是這里是tcp連接, 端口號是61616 29 --> 30 <property name="brokerURL" value="tcp://192.168.200.128:61616"/> 31 <!-- 設置用戶名及密碼 --> 32 <property name="userName" value="admin"></property> 33 <property name="password" value="admin"></property> 34 </bean> 35 36 <!-- 配置連接池管理工廠 ,由Apache提供.--> 37 <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean"> 38 <!-- 注入工廠 --> 39 <property name="connectionFactory" ref="activeMQConnectionFactory"></property> 40 <!-- 設置最大連接數 --> 41 <property name="maxConnections" value="5"></property> 42 </bean> 43 44 <!-- 把上面的工廠交給Spring管理 --> 45 <bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 46 <!-- 注入上面的工廠 --> 47 <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"></property> 48 </bean> 49 50 <!-- 使用Spring提供的jmsTemplate模板來操作ActiveMQ --> 51 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 52 <!-- 注入Spring單例工廠 --> 53 <property name="connectionFactory" ref="singleConnectionFactory"></property> 54 <!-- 設置默認的目標管道 --> 55 <property name="defaultDestinationName" value="pId"/> 56 </bean> 57 58 <!-- 實例化一個監聽到消息后 處理此消息的類 --> 59 <bean id="customMessageListener" class="cn.itcast.core.service.message.CustomMessageListener"/> 60 61 <!-- 配置實時監聽器 --> 62 <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 63 <!-- 配置工廠, 需要配置spirng的工廠 --> 64 <property name="connectionFactory" ref="singleConnectionFactory"/> 65 <!-- 設置監聽的目標 --> 66 <property name="destinationName" value="pId"/> 67 <!-- 監聽后獲取消息的類, 接收監聽到的消息 --> 68 <property name="messageListener" ref="customMessageListener"></property> 69 <!-- 默認是隊列模式, 可改為主題, 發布模式 publish subject --> 70 <property name="pubSubDomain" value="true"/> 71 </bean> 72 </beans> View Code

SearchServiceImpl.java: 保存商品信息到Solr服務器中, 通過ActiveMQ

1 //保存商品信息到Solr服務器中, 通過ActiveMQ 2 public void insertProductToSolr(Long productId){ 3 //TODO 保存商品信息到Solr服務器 4 SolrInputDocument doc = new SolrInputDocument(); 5 //ID 6 doc.setField("id", productId); 7 //名稱 8 Product p = productDao.selectByPrimaryKey(productId); 9 doc.setField("name_ik", p.getName()); 10 //圖片URL 11 doc.setField("url", p.getImgUrls()[0]); 12 //品牌 ID 13 doc.setField("brandId", p.getBrandId()); 14 //價格 sql查詢語句: select price from bbs_sku where product_id = ? order by price asc limit 1 15 SkuQuery skuQuery = new SkuQuery(); 16 skuQuery.createCriteria().andProductIdEqualTo(productId); 17 skuQuery.setOrderByClause("price asc"); 18 skuQuery.setPageNo(1); 19 skuQuery.setPageSize(1); 20 List<Sku> skus = skuDao.selectByExample(skuQuery); 21 doc.setField("price", skus.get(0).getPrice()); 22 //...時間等 剩下的省略 23 24 try { 25 solrServer.add(doc); 26 solrServer.commit(); 27 } catch (Exception e) { 28 // TODO Auto-generated catch block 29 e.printStackTrace(); 30 } 31 } View Code

CustomMessageListener.java: 監聽ActiveMQ中傳遞過來的消息, 且對傳遞過來的消息進行處理:

1 public class CustomMessageListener implements MessageListener{ 2 @Autowired 3 private SearchService searchService; 4 5 @Override 6 public void onMessage(Message message) { 7 //先將接收到的消息強轉為ActiveMQ類型的消息 8 //因為在消息發送方那邊傳遞的是Text類型的消息對象, 所以需要轉成ActiveMQTextMessage 9 ActiveMQTextMessage amtm = (ActiveMQTextMessage)message; 10 try { 11 String id = amtm.getText(); 12 System.out.println("接收到的ID:"+id); 13 searchService.insertProductToSolr(Long.parseLong(id)); 14 } catch (JMSException e) { 15 // TODO Auto-generated catch block 16 e.printStackTrace(); 17 } 18 } 19 } View Code


===============================
babasport-cms:
mq.xml:

1 <!-- 配置Spring 來管理MQ消息隊列 , 連接ActiveMQ--> 2 <!-- 連接工廠, 此工廠由Apache提供 --> 3 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 4 <!-- 連接地址 5 在網頁端訪問是:http://192.168.200.128:8161, 但是這里是tcp連接, 端口號是61616 6 --> 7 <property name="brokerURL" value="tcp://192.168.200.128:61616"/> 8 <!-- 設置用戶名及密碼 --> 9 <property name="userName" value="admin"></property> 10 <property name="password" value="admin"></property> 11 </bean> 12 13 <!-- 配置連接池管理工廠 ,由Apache提供.--> 14 <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean"> 15 <!-- 注入工廠 --> 16 <property name="connectionFactory" ref="activeMQConnectionFactory"></property> 17 <!-- 設置最大連接數 --> 18 <property name="maxConnections" value="5"></property> 19 </bean> 20 21 <!-- 把上面的工廠交給Spring管理 --> 22 <bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 23 <!-- 注入上面的工廠 --> 24 <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"></property> 25 </bean> 26 27 <!-- 使用Spring提供的jmsTemplate模板來操作ActiveMQ --> 28 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 29 <!-- 注入Spring單例工廠 --> 30 <property name="connectionFactory" ref="singleConnectionFactory"></property> 31 <!-- 設置默認的目標管道 --> 32 <property name="defaultDestinationName" value="pId"/> 33 </bean> 34 35 <!-- 實例化一個監聽到消息后 處理此消息的類 --> 36 <bean id="customMessageListener" class="cn.itcast.core.service.message.CustomMessageListener"/> 37 38 <!-- 配置實時監聽器 --> 39 <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 40 <!-- 配置工廠, 需要配置spirng的工廠 --> 41 <property name="connectionFactory" ref="singleConnectionFactory"/> 42 <!-- 設置監聽的目標 --> 43 <property name="destinationName" value="pId"/> 44 <!-- 監聽后獲取消息的類, 接收監聽到的消息 --> 45 <property name="messageListener" ref="customMessageListener"></property> 46 <!-- 默認是隊列模式, 可改為主題, 發布模式 publish subject --> 47 <property name="pubSubDomain" value="true"/> 48 </bean> View Code

CustomMessageListener.java: 監聽ActiveMQ中傳遞過來的消息, 且對傳遞過來的消息進行處理:

1 public class CustomMessageListener implements MessageListener{ 2 @Autowired 3 private StaticPageService staticPageService; 4 @Autowired 5 private CMSService cmsService; 6 7 @Override 8 public void onMessage(Message message) { 9 //先將接收到的消息強轉為ActiveMQ類型的消息 10 //因為在消息發送方那邊傳遞的是Text類型的消息對象, 所以需要轉成ActiveMQTextMessage 11 ActiveMQTextMessage amtm = (ActiveMQTextMessage)message; 12 try { 13 String id = amtm.getText(); 14 System.out.println("CMS接收到的ID:"+id); 15 Map<String, Object> root = new HashMap<String, Object>(); 16 17 Product product = cmsService.selectProductById(Long.parseLong(id)); 18 List<Sku> skus = cmsService.selectSkuListByProductIdWithStock(Long.parseLong(id)); 19 //去掉重復的顏色 20 Set<Color> colors = new HashSet<Color>(); 21 for (Sku sku : skus) { 22 colors.add(sku.getColor()); 23 } 24 root.put("colors", colors); 25 root.put("product", product); 26 root.put("skus", skus); 27 28 staticPageService.index(root, id); 29 } catch (JMSException e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 } 33 } 34 } View Code

StaticPageServiceImpl.java: 靜態化頁面的核心類:

1 public class StaticPageServiceImpl implements StaticPageService, ServletContextAware{ 2 //SpringMvc 管理 conf 3 private Configuration conf; 4 public void setFreeMarkerConfig(FreeMarkerConfig freeMarkerConfig) { 5 this.conf = freeMarkerConfig.getConfiguration(); 6 } 7 8 //靜態化頁面的方法 9 public void index(Map<String, Object> root, String id){ 10 //輸出目錄: 通過getPath方法獲取的是絕對路徑 11 String path = getPath("/html/product/" + id +".html"); 12 File f = new File(path); 13 File parentFile = f.getParentFile(); 14 if(!parentFile.exists()){ 15 parentFile.mkdirs(); 16 } 17 18 //spring中已經設置了模板路徑:<property name="templateLoaderPath" value="/WEB-INF/ftl/" /> 19 Writer out = null; 20 21 try { 22 // 23 Template template = conf.getTemplate("product.html"); 24 25 //設置輸出的位置 26 // 27 out = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); 28 template.process(root, out); 29 } catch (Exception e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 }finally { 33 if (out != null) 34 { 35 try { 36 out.close(); 37 } catch (IOException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 } 41 } 42 43 } 44 45 } 46 47 //獲取webapp下的html文件夾所在的位置 48 //將相對路徑轉換為絕對路徑 49 public String getPath(String path){ 50 return servletContext.getRealPath(path); 51 } 52 53 private ServletContext servletContext; 54 @Override 55 public void setServletContext(ServletContext servletContext) { 56 this.servletContext = servletContext; 57 } 58 } View Code

Spring管理 freemarkerConfig配置類:

1 <!-- 配置freemarker 實現類 --> 2 <bean class="cn.itcast.core.service.StaticPageServiceImpl"> 3 <property name="freeMarkerConfig"> 4 <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 5 <!-- 設置模板所在目錄或文件夾的位置, 相對路徑 --> 6 <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> 7 <!-- 設置默認編碼集 --> 8 <property name="defaultEncoding" value="UTF-8"></property> 9 </bean> 10 </property> 11 </bean> View Code

更多關于freemarker的講解請關注我以后的博客...
關于ActiveMQ的內容就更新到這么多.



轉載于:https://www.cnblogs.com/wang-meng/p/5831538.html

總結

以上是生活随笔為你收集整理的ActiveMQ的介绍及使用实例.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

丁香激情五月婷婷 | 96在线 | 国产 在线观看 | 粉嫩高清一区二区三区 | 国产麻豆精品在线观看 | 日日干干夜夜 | 国产美女久久久 | 91日本在线播放 | 色综合久久五月天 | 国产一线天在线观看 | 免费a网站 | 黄色av一区 | 国产又粗又猛又黄 | 欧美a影视 | 999国内精品永久免费视频 | 亚洲精品高清视频 | 午夜.dj高清免费观看视频 | 久草精品视频在线观看 | 日韩中文字幕国产 | 久草在线手机观看 | 天天操福利视频 | www.婷婷com | 黄色免费在线视频 | 日韩精品一区二区三区外面 | 亚洲国产精彩中文乱码av | 午夜精品久久久久 | 国产在线91精品 | 久操中文字幕在线观看 | 999视频在线播放 | 成人wwwxxx视频 | 97碰碰精品嫩模在线播放 | 日韩高清 一区 | 久久这里只有精品首页 | 天堂av在线网站 | 国产99在线 | 激情中文字幕 | www日韩| 黄污在线观看 | 亚洲一级久久 | 免费看搞黄视频网站 | 日韩av一区二区三区四区 | 久99久中文字幕在线 | 九九在线精品视频 | 天天爱天天干天天爽 | 人人cao | 亚洲欧美国产精品va在线观看 | 日韩欧美高清在线 | 午夜精品99久久免费 | 久久久久久久久久影院 | 97超碰.com | 色五月情| 欧美在线aaa | 免费看色的网站 | 婷五月天激情 | 国产欧美在线一区 | 成人午夜精品久久久久久久3d | 四虎影视精品成人 | 国产精品激情偷乱一区二区∴ | 欧美成人精品三级在线观看播放 | 在线亚洲天堂网 | 日韩大片免费观看 | www.黄色片网站 | 97免费公开视频 | 国产你懂的在线 | 日韩精品一区二区三区高清免费 | 日韩在线观看免费 | 亚洲精品午夜久久久久久久久久久 | 中文字幕一区二区三区在线播放 | 在线一区av| 三级黄色大片在线观看 | 天天爽夜夜爽人人爽一区二区 | 日日操日日操 | 爱干视频 | 91精品国产乱码久久 | 亚洲欧洲日韩 | 综合久久影院 | 亚洲高清视频在线观看免费 | 成人午夜电影在线观看 | 国产精品视频999 | 免费在线黄 | 天天操天天色天天射 | 免费网站在线观看人 | 超碰97国产精品人人cao | 亚洲一区欧美激情 | 欧洲亚洲精品 | 在线视频亚洲 | 香蕉视频在线播放 | 国产高清久久久久 | 最近日本韩国中文字幕 | 啪啪免费观看网站 | 国产网站在线免费观看 | 深爱激情av| 91成人精品观看 | 国产69精品久久99不卡的观看体验 | av免费看网站 | 麻豆久久久久 | 国产精品影音先锋 | 国产亲近乱来精品 | 精品国产乱码久久久久 | 一级精品视频在线观看宜春院 | 国产午夜一区二区 | 久久国产影视 | 在线国产91 | 日本激情中文字幕 | 精品国产一区二区三区久久久蜜月 | 欧美a级成人淫片免费看 | 少妇bbw撒尿 | 人人干人人搞 | 麻豆免费视频网站 | 日韩欧美在线观看一区二区三区 | 五月天com| 九九九在线 | 午夜久久久久久久久久影院 | 日韩视频在线观看免费 | 天天曰天天爽 | 免费黄在线观看 | 久久久蜜桃 | 精品视频专区 | 日韩在线欧美在线 | 久久午夜国产精品 | 久久午夜网 | 欧美aa一级片 | 日本黄色黄网站 | 日韩国产精品毛片 | 夜夜爱av | 亚洲乱亚洲乱亚洲 | 国产免费av一区二区三区 | 911久久| 欧美在线观看小视频 | 香蕉成人在线视频 | 国产精品乱码久久久 | 深夜男人影院 | 伊人狠狠干| www黄com | 九九在线精品视频 | 午夜91在线 | 亚洲精品欧美精品 | 国产专区第一页 | 毛片随便看 | 狠狠的干狠狠的操 | 日日碰夜夜爽 | 日韩在线视频网址 | 久久久婷 | 国产a免费 | 四虎成人免费观看 | 国产精品美女久久久 | 综合色站 | 国产在线一区二区三区播放 | 婷婷丁香色综合狠狠色 | 国产精品久久久久久超碰 | 成人电影毛片 | 亚洲精品456在线播放乱码 | 免费福利片2019潦草影视午夜 | 激情久久影院 | 久久久麻豆精品一区二区 | 中文在线亚洲 | 欧美日韩在线观看一区二区三区 | av高清免费在线 | 天天躁天天狠天天透 | 免费看国产黄色 | 欧美性做爰猛烈叫床潮 | 久久精品视频4 | 视频国产在线观看18 | 99精品国产福利在线观看免费 | 天天草天天插 | 最新黄色av网址 | 国产伦理一区二区 | 成人a视频 | 欧美日韩免费观看一区二区三区 | 国产一区视频免费在线观看 | 国产一区免费观看 | 亚洲综合最新在线 | 久久精品国亚洲 | 夜色资源站国产www在线视频 | 在线看日韩av | 人人舔人人插 | 亚洲aⅴ免费在线观看 | 91九色蝌蚪视频在线 | 国产精品久久久一区二区三区网站 | 国产91九色视频 | 亚洲 欧美 日韩 综合 | 成人免费观看视频网站 | 久艹视频在线免费观看 | 中文有码在线 | 日韩最新在线视频 | 中文字幕美女免费在线 | 国产成人三级三级三级97 | 日韩免费在线看 | 国产精品自产拍在线观看蜜 | 国产片免费在线观看视频 | 精品九九九 | 久热电影 | 久久国产剧场电影 | 麻豆91在线 | 亚洲在线视频免费观看 | 中文字幕色站 | 夜夜干夜夜 | 欧美精品免费一区二区 | 4hu视频| 欧美一二三在线 | 久久久高清视频 | 亚洲日本精品视频 | 欧美在线视频第一页 | 精品麻豆| 五月婷婷丁香综合 | 五月天国产精品 | 国产二区视频在线观看 | 国产色资源 | 在线免费观看国产黄色 | 欧美黄色软件 | 一区二区三区四区免费视频 | 久久综合网色—综合色88 | 中文字幕在线免费播放 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 人人插人人艹 | 久久字幕精品一区 | 国产视频欧美视频 | 精品久久精品久久 | 成人黄大片视频在线观看 | 男女全黄一级一级高潮免费看 | 天天干天天天 | 色就是色综合 | av一区二区在线观看中文字幕 | 最近中文字幕视频网 | 超碰97人| 亚洲最新av网址 | 色婷婷a| 一区二区三区在线视频111 | 日韩欧美高清一区二区三区 | 91精品入口 | 日韩91精品 | 日韩免费高清在线 | 国产一区在线视频观看 | 免费视频一级片 | 人人澡人人爽 | 麻豆精品91 | 亚洲最大免费成人网 | 91在线免费公开视频 | 天天色天天干天天 | 国产午夜三级 | 中文av在线免费观看 | 在线免费观看视频一区二区三区 | 少妇性色午夜淫片aaaze | 国产精品免费av | 国产三级午夜理伦三级 | 天天操狠狠操夜夜操 | 国产精品a久久久久 | 久久亚洲电影 | 最近中文字幕高清字幕在线视频 | av五月婷婷 | 色偷偷人人澡久久超碰69 | 久久久久北条麻妃免费看 | 毛片网站免费 | 亚洲欧美国产日韩在线观看 | 亚洲精品在线观看中文字幕 | 日韩精品一区二区不卡 | www99久久| 欧美男同网站 | 国产精品久久一卡二卡 | 激情黄色av | 国产又粗又猛又黄又爽的视频 | 在线观看国产www | 99草视频 | 黄色视屏免费在线观看 | 99视频免费看 | av片中文字幕 | 久久久久成人精品 | 美国av大片 | 久久天天躁狠狠躁亚洲综合公司 | 国产一级一片免费播放放 | 国产亚洲精品久久久久久网站 | 日韩在线高清免费视频 | 91九色视频观看 | 丁香六月av | 激情文学综合丁香 | 国产亚洲精品久久久久久无几年桃 | 国产成人资源 | 热99久久精品 | 成人网在线免费视频 | 久久久久成人精品亚洲国产 | 99理论片 | 超碰在线最新地址 | 欧美一区二区免费在线观看 | 在线视频app | 一区二区三区污 | 午夜三级大片 | 色噜噜日韩精品一区二区三区视频 | 激情xxxx| 天天干天天做天天操 | 欧美大片第1页 | 91丨九色丨国产在线观看 | 在线视频专区 | 黄色在线观看污 | 综合天堂av久久久久久久 | 欧美国产91| 激情视频在线观看网址 | 成人午夜电影在线播放 | 久久综合毛片 | 九九视频免费观看视频精品 | 成人黄色小说网 | 久久久久久高潮国产精品视 | 亚洲精品在线免费看 | 久久久久国产精品免费网站 | 国产人成一区二区三区影院 | 日日日网| 日韩字幕 | 日韩精品一区二区在线观看视频 | 日本公妇在线观看高清 | 激情在线网址 | 亚洲免费av网站 | 伊人久久精品久久亚洲一区 | zzijzzij日本成熟少妇 | 亚洲一区二区91 | 欧美极品裸体 | 欧美精品黑人性xxxx | 999ZYZ玖玖资源站永久 | 香蕉网在线观看 | 天堂在线免费视频 | 国产系列精品av | 在线亚洲欧美视频 | 免费观看一级 | 国产精品国内免费一区二区三区 | 黄在线| 欧美视频18 | 国产精品国产三级国产aⅴ入口 | 国产精品一区二区在线 | 五月综合激情婷婷 | a久久免费视频 | 国产精品美女久久久久久久网站 | 最新国产福利 | 成人 亚洲 欧美 | 久久蜜臀av| 午夜精品久久一牛影视 | 免费人成在线观看网站 | 日韩一区二区三区在线观看 | 午夜黄色一级片 | 亚洲精选在线观看 | 国产精品久久久久影院 | 国内精品久久久久影院优 | 国产 成人 久久 | 久久综合一本 | 国产破处视频在线播放 | 日韩视频在线观看免费 | 亚洲综合色网站 | 日韩精品在线视频免费观看 | 国产一区私人高清影院 | 日韩在线观看视频免费 | 在线观看午夜 | 五月天伊人 | 四虎在线观看视频 | 天天做日日爱夜夜爽 | 精品国产乱码一区二区三区在线 | 欧美日韩精品在线观看视频 | 久久综合狠狠 | 国产美女免费视频 | 婷婷九月丁香 | 精品国产三级a∨在线欧美 免费一级片在线观看 | www.大网伊人 | 激情欧美国产 | 精品中文字幕在线 | 久久综合影视 | 国产成人333kkk | 国产成人高清在线 | 一区二区三区在线影院 | 人人爽人人爽人人片av | 黄色天堂在线观看 | 精品在线观看视频 | 在线观av | 黄色小视频在线观看免费 | 色视频在线观看免费 | 亚洲男女精品 | 国产伦理一区二区 | 久久黄色网 | 国产精品网址在线观看 | 久久精品免费观看 | 成人免费网视频 | 久久国产精品成人免费浪潮 | 在线黄色免费 | 国产精品欧美日韩在线观看 | 日韩欧美在线高清 | 91亚洲精品国偷拍自产在线观看 | 91精品电影 | 亚洲国产999 | av中文字幕免费在线观看 | 99在线精品视频在线观看 | 香蕉视频网站在线观看 | 国产精品原创在线 | a级片韩国 | 国产精品高潮呻吟久久av无 | 国产日韩中文在线 | 黄色日本片 | av观看在线观看 | 亚洲国产中文字幕在线观看 | 精品一区电影国产 | 国产精品久久久久久久久久免费看 | 国产精品成人国产乱 | 人人盈棋牌 | 91插插插网站 | 国产精彩在线视频 | 国产精品1000 | 亚洲综合欧美激情 | 色免费在线 | 亚洲精品在线网站 | 成人一区二区在线 | 久久精品96 | 99免费观看视频 | 狠狠五月婷婷 | www.久久久| 国产精品一区二区在线免费观看 | 国产欧美在线一区 | 日日夜夜人人精品 | 午夜精品一区二区三区可下载 | 久久久久久久久久久久久国产精品 | 丁香婷婷射 | 天天操天天综合网 | 国产精品久久影院 | 成人激情开心网 | 91在线看免费 | 日韩影视在线观看 | 日本黄色免费在线观看 | 国产在线观看地址 | 91视频91蝌蚪 | 国产精品18久久久久久久久 | 欧美成人一区二区 | 欧美成人区| 精品一区二区免费 | 久久免费视频2 | 国产精品久久久久一区 | 国产在线中文字幕 | 久久久久久草 | 久久久久国产精品视频 | 日韩精品视频免费在线观看 | 久久婷婷色综合 | 成人avav| 久久亚洲精品国产亚洲老地址 | 国产欧美最新羞羞视频在线观看 | 丁香九月激情综合 | 色999精品| 欧美日本一二三 | 久久精品欧美一区二区三区麻豆 | 97手机电影网 | 91高清一区 | 五月亚洲综合 | 国产91免费在线 | 日韩视频免费在线观看 | 韩日精品视频 | 丁香五月网久久综合 | 久久久精品视频成人 | 丰满少妇在线观看网站 | 久久亚洲综合色 | 国产一区欧美二区 | 午夜丁香视频在线观看 | 在线成人av | www.久草.com | 日韩免费在线视频观看 | 国产精品久免费的黄网站 | 亚洲精品456在线播放 | 中国一级片在线 | 久久黄色网 | 中文字幕专区高清在线观看 | 久久精品99精品国产香蕉 | 最新国产在线 | 亚洲爱爱视频 | 欧美黄色软件 | 久久精品视频3 | 日韩中文久久 | 久草精品免费 | 国产黑丝袜在线 | 成人在线免费看 | 亚洲美女精品视频 | 国产高清不卡一区二区三区 | 国产精品视频区 | 欧美性生活一级片 | 国产精品成人久久 | 日本三级人妇 | 日日躁你夜夜躁你av蜜 | 午夜在线免费观看 | 精品国产黄色片 | 日韩高清在线一区 | 91亚洲在线 | 在线观看视频色 | wwwwww黄 | 7777精品伊人久久久大香线蕉 | 一区二区三区日韩视频在线观看 | 久久亚洲专区 | 欧美日韩xx | 91九色在线观看视频 | 免费福利在线 | 中文永久免费观看 | 亚洲午夜久久久久久久久 | 99这里有精品 | 亚洲理论在线观看电影 | 最近中文字幕高清字幕免费mv | 亚洲精品日韩在线观看 | 国产黄色免费在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 在线观看一区 | 四虎成人精品在永久免费 | 中文有码在线视频 | 国产精品入口麻豆 | 免费av影视 | 日韩一区二区三区在线观看 | 国产不卡一二三区 | 在线看v片成人 | 天天干天天操天天干 | 日韩精品一区二区三区视频播放 | 亚洲精品视 | 五月婷婷操| 久草免费在线视频 | 欧美黑吊大战白妞欧美 | 看av免费| 黄色影院在线观看 | 97精品国产97久久久久久免费 | 日p在线观看| 婷婷播播网 | 精品久久91 | 免费网站看v片在线a | 丁香六月欧美 | 免费中文字幕在线观看 | 亚洲电影成人 | 久久中文字幕视频 | 日韩理论 | 香蕉影院在线播放 | 在线免费国产视频 | 亚洲一区二区三区91 | 黄色的片子 | 成人中文字幕在线观看 | 婷婷丁香五| 黄色com | 中文字幕在线色 | 天天干天天拍天天操 | 丁香久久激情 | 国产99久久九九精品免费 | 久久国产二区 | 亚洲精品在线视频观看 | 国产精品免费在线播放 | 手机在线日韩视频 | 国产精彩视频 | 成年人黄色免费看 | 亚洲视频综合 | 国产精品入口66mio女同 | 美女免费视频观看网站 | 亚洲h色精品 | 激情综合网五月激情 | 日韩精品专区在线影院重磅 | 天天干天天摸 | 成全在线视频免费观看 | 六月丁香在线观看 | 91精品国产91热久久久做人人 | 九九精品视频在线 | 日韩中文字幕在线不卡 | 久久久久久久久福利 | 久久久久久毛片精品免费不卡 | 91在线一区二区 | 国产精品精品国产色婷婷 | 久久tv| 欧美日韩在线精品一区二区 | 久久精品久久99 | 国产a级片免费观看 | 全久久久久久久久久久电影 | 国产精品亚洲视频 | 天天操狠狠干 | 日韩电影在线观看一区二区 | 久久一区二区三区日韩 | 久久免费视频在线观看 | 免费国产亚洲视频 | 91免费看黄色 | 天天操操操操操操 | 有码一区二区三区 | 亚洲天堂社区 | 一区二区精品国产 | 久久99精品久久久久久秒播蜜臀 | 久草在在线 | 久久字幕精品一区 | 精品在线你懂的 | 久久综合影音 | 蜜臀一区二区三区精品免费视频 | 中文在线www | 97视频免费 | 六月色丁 | 午夜免费在线观看 | 免费黄色激情视频 | 日韩免费电影在线观看 | 97成人在线观看 | 成人精品视频 | 日日草天天干 | 伊人在线视频 | 国产婷婷vvvv激情久 | 亚洲精品乱码久久久久久写真 | 亚洲综合一区二区精品导航 | 成人wwwxxx视频 | 色网站免费在线观看 | 99视频黄| 人人看人人做人人澡 | www.色婷婷 | 日韩在观看线 | 99国产视频 | 婷婷日韩| av一二三区 | 亚洲欧洲成人精品av97 | 中文字幕 国产视频 | 中文字幕中文中文字幕 | 在线视频观看成人 | 美女在线观看av | 天天色综合1 | 成人h电影在线观看 | 久久久精品久久日韩一区综合 | 亚洲精选在线观看 | 91亚瑟视频 | 国产糖心vlog在线观看 | 免费a v在线 | 日韩一二三区不卡 | 婷婷在线观看视频 | 国产精品69久久久久 | 久久久黄色| 亚洲欧美视频在线观看 | 波多野结衣在线视频一区 | 久久久在线观看 | 国内小视频 | 国内免费的中文字幕 | 久久久人人人 | 久久99国产精品久久99 | 丁香一区二区 | 久久手机免费观看 | 免费视频在线观看网站 | 久久精品xxx | av不卡中文 | 精品国产aⅴ一区二区三区 在线直播av | 国产一区二区免费在线观看 | 成人黄色国产 | 久久9精品 | 国产精品成人av电影 | 免费观看午夜视频 | 国产aa免费视频 | 伊人色综合久久天天网 | 尤物97国产精品久久精品国产 | 天天射天天干天天 | 国产区精品在线观看 | 五月天天色| 国产小视频免费观看 | 日韩在线网 | av资源中文字幕 | 欧美一区二区三区特黄 | 视频一区二区在线观看 | 91亚色在线观看 | 中文一二区 | 成人午夜电影免费在线观看 | av大全在线观看 | 美女黄视频免费看 | 国产高清在线a视频大全 | 日韩中文字幕免费视频 | 一本一道久久a久久综合蜜桃 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 特级西西人体444是什么意思 | 不卡的av电影 | 开心激情五月网 | 免费观看十分钟 | 黄色天堂在线观看 | av免费网页| 日日夜夜天天久久 | 97电影在线| 久久久久国产一区二区 | 欧美一区,二区 | 国产精品久久伊人 | 在线看欧美 | 色资源网免费观看视频 | 国产九九九九九 | www操操 | 亚洲影视九九影院在线观看 | 国产999免费视频 | 国产白浆在线观看 | 色综合久久中文字幕综合网 | 在线免费观看视频 | 亚洲黄色app | 久久综合综合久久综合 | 欧美日本不卡视频 | 久久久综合精品 | 国产精品欧美在线 | 特级毛片在线免费观看 | 久久综合久色欧美综合狠狠 | 久久另类小说 | 免费色视频在线 | 久久精彩免费视频 | 在线成人看片 | 久草在线看片 | 色片网站在线观看 | 在线观看av大片 | 久草91视频 | 亚洲精品一区二区三区高潮 | 日韩专区 在线 | av中文字幕免费在线观看 | 伊人资源站 | 黄色片视频在线观看 | 91久久国产自产拍夜夜嗨 | 91九色最新地址 | 久久免费在线 | 亚洲精品午夜aaa久久久 | 91精品久久香蕉国产线看观看 | 91九色自拍 | 992tv在线观看网站 | 黄色中文字幕在线 | 视频国产一区二区三区 | 精品国产成人av | 天天se天天cao天天干 | 久久99日韩 | 国产成人综 | 日韩欧美视频二区 | 成人av直播 | www.天堂av| 国产精品video | 日本性生活一级片 | 免费看三片 | 欧美无极色 | 首页av在线 | 国产精品9999久久久久仙踪林 | 一区二区三区四区五区在线 | 99国产精品一区二区 | 日韩va亚洲va欧美va久久 | 婷婷激情5月天 | 蜜桃视频成人在线观看 | 成年人免费看 | 久久综合狠狠综合久久激情 | 97视频人人 | 五月天精品视频 | 99久久精品午夜一区二区小说 | 黄色一区二区在线观看 | 久久欧美在线电影 | 日韩在线播放av | 四虎成人免费观看 | 人成在线免费视频 | 一区二区三区精品在线视频 | 久久免费看毛片 | 国产精品一级视频 | 日日碰狠狠躁久久躁综合网 | 最新中文字幕视频 | 激情五月***国产精品 | 日韩最新在线 | 国产伦理精品一区二区 | 91探花视频 | 一区二区三区高清 | 欧美激情片在线观看 | 四虎国产精品免费 | 日本三级香港三级人妇99 | 国内精品视频在线 | 夜夜操天天操 | 激情中文字幕 | 亚洲婷婷免费 | 欧美一级免费片 | 久久高清国产视频 | 国产免费a| 亚洲视频在线免费看 | 91在线播| 精品一区二区日韩 | 国产日韩欧美在线一区 | 美女露久久 | 四虎影视久久久 | 日韩电影在线视频 | 亚洲精品国产高清 | 一区二区三区四区精品视频 | 免费看麻豆 | 国产午夜av | 干干干操操操 | 欧美日韩亚洲在线观看 | 精品久久久久国产免费第一页 | 二区三区毛片 | 色综合小说 | 成人国产精品久久久久久亚洲 | 日韩欧美在线中文字幕 | 亚洲国产剧情 | 丰满少妇在线观看网站 | 久草在线视频在线 | 色停停五月天 | 91视频免费| 五月天中文字幕 | 在线观看日韩国产 | 在线中文字母电影观看 | www.亚洲视频.com | 国产区精品视频 | 国产97在线视频 | 蜜臀久久99精品久久久无需会员 | 午夜在线日韩 | 视频1区2区 | 91激情视频在线播放 | 黄色一区三区 | 久久国产91 | 黄色一二级片 | 91九色视频| 波多野结衣在线中文字幕 | 久草观看| 久久一区二区三区超碰国产精品 | 91亚洲永久精品 | 操操操日日 | 国产在线999 | 久久久久久久久久毛片 | 五月开心激情 | 超碰免费公开 | 精品电影一区二区 | 日韩精品视 | 久久人人做 | 国产小视频在线播放 | 美女在线观看av | 日韩在线网 | 国产精品成人久久久 | 亚洲最大在线视频 | 久久久 精品| 午夜三级毛片 | 中文字幕资源网在线观看 | 韩国精品一区二区三区六区色诱 | av片一区| 亚洲精品视频在线免费播放 | 91在线播放综合 | 国产精品久久久视频 | 91人人揉日日捏人人看 | 日本一区二区高清不卡 | 久艹在线观看视频 | 久久精品a| 天堂av高清| 天天爱天天射天天干天天 | 狠狠插狠狠干 | 最新av网址在线 | 国产资源在线视频 | 亚洲九九九 | 欧美成人亚洲成人 | 玖玖玖影院 | 欧美日韩在线播放 | 日韩精品视频在线免费观看 | 欧美日韩亚洲一 | 狠狠色噜噜狠狠狠合久 | 四虎影视精品永久在线观看 | 高清精品在线 | 在线播放一区二区三区 | 99tvdz@gmail.com | 天天曰天天干 | 在线视频观看亚洲 | 国产原创在线观看 | 九九免费精品视频在线观看 | 99视频播放 | 黄a在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 精品久久久久久久久中文字幕 | 亚洲午夜久久久久久久久电影网 | 亚洲精品xx| 一区二区视频在线免费观看 | 亚洲精品美女久久 | 成人一级在线观看 | 色婷av | 久久激情日本aⅴ | 欧美日韩高清在线一区 | 99视频在线免费看 | 日本在线精品视频 | 三级黄免费看 | 97超级碰碰碰视频在线观看 | 99婷婷| 亚洲精品国产品国语在线 | 精品在线视频播放 | 一本一本久久a久久精品综合妖精 | 久久精品99国产精品亚洲最刺激 | 一区二区视频在线免费观看 | 蜜臀av免费一区二区三区 | 日韩xxxbbb| 天天操天天添天天吹 | www免费在线观看 | 日韩素人在线观看 | 日日夜精品 | 久亚洲 | 欧美亚洲免费在线一区 | 最近2019中文免费高清视频观看www99 | 国产成人av免费在线观看 | 亚洲专区在线 | 最近更新好看的中文字幕 | 韩国av免费观看 | av国产在线观看 | 亚洲区二区 | 日本公乱妇视频 | 亚洲精品视频网址 | 久久成人国产精品一区二区 | 久久私人影院 | 免费看片黄色 | 国产精品综合久久久久久 | 午夜在线观看一区 | 91亚洲综合| 五月婷婷综合色拍 | 成人在线网站观看 | 亚洲九九 | 91秒拍国产福利一区 | 欧美日韩一二三四区 | 人人干人人爽 | www.com黄 | 亚洲日日夜夜 | 久久久污 | 深夜免费福利网站 | av中文字幕免费在线观看 | 欧美最猛性xxxxx(亚洲精品) | 在线观看欧美成人 | 久射网| 超碰电影在线观看 | 天天综合入口 | 欧美日韩国产免费视频 | 狠狠狠狠狠狠天天爱 | 亚洲一区二区精品视频 | 99综合电影在线视频 | 久久久毛片 | 九九热视频在线播放 | 超碰在线最新 | 天堂av在线7 | 久久久精品欧美一区二区免费 | 欧美精品久久久久久久久老牛影院 | 亚洲日本黄色 | 五月天色综合 | 亚洲欧洲精品在线 | 一区二区男女 | 婷婷色中文网 | 亚洲精品合集 | 国产精品毛片一区二区 | 福利片免费看 | 人人爽影院 | 日操操| www久久九 | av电影在线免费观看 | 欧美一级性 | 国产亚洲精品日韩在线tv黄 | 亚洲精品一区二区三区在线观看 | 亚洲成色777777在线观看影院 | 狠狠色伊人亚洲综合网站野外 | 麻豆你懂的 | 亚洲精选在线 | 国产涩涩网站 | 99久久精品电影 | 欧美性极品xxxx做受 | 欧美日韩在线精品一区二区 | 免费在线观看av网址 | 91一区二区三区在线观看 | 最近高清中文在线字幕在线观看 | 国产在线播放一区二区 | 4438全国亚洲精品观看视频 | 4438全国亚洲精品在线观看视频 | 免费三级a | 亚洲精品合集 | 国产一区二区免费看 | 久久婷婷激情 | 欧美a级免费视频 | 中文字幕久久网 | 一区二区三区精品在线视频 | 人人爽人人爽人人片 | 国产自产在线视频 | 综合在线色 | 啪啪午夜免费 | 一级片免费在线 | 91色一区二区三区 | 国内成人精品视频 | 亚洲国产成人在线 | 国产在线观看av | 99久久精品国产一区二区三区 | 中文字幕在线播放一区二区 | 欧美aaa大片 | 成人国产精品 | 日本xxxxav | 尤物97国产精品久久精品国产 | 天天操夜夜爱 | 天天射天天做 | 成人一区在线观看 | 天天躁日日躁狠狠躁 | 亚洲精品一区二区网址 | 九九九九九精品 | 在线色资源 | 免费日韩一区二区三区 | 99久在线精品99re8热视频 | 韩国视频一区二区三区 | 久久精品久久精品久久精品 | 国产另类xxxxhd高清 | 亚洲a网| 亚洲自拍av在线 | 免费能看的av | 国产精品久久久久久久久久久久 | 草在线 | 久久国产精品久久久久 | 成人国产精品一区 | 色偷偷88888欧美精品久久久 | 狠狠狠狠狠狠 | 免费福利在线播放 | 国产日韩在线播放 | 欧美精品亚洲精品 | 久久婷婷色 | 中文字幕色在线视频 | av片子在线观看 | 波多野结衣精品视频 | 日韩欧美一级二级 | 在线观看mv的中文字幕网站 | 五月天欧美精品 | 婷婷视频在线观看 | 亚洲精品免费在线视频 | 综合久久一本 | 国产在线国偷精品产拍 | 99在线精品视频在线观看 | 日韩三级中文字幕 | 色噜噜在线观看视频 | 国产午夜激情视频 | 日韩免费看视频 |