1. 程式人生 > >Spring+ActiveMQ訊息持久化,Topic持久化訂閱

Spring+ActiveMQ訊息持久化,Topic持久化訂閱

訊息持久化就是將訊息儲存到磁碟,這樣的好處就是如果服務掛了,則訊息還儲存在磁碟不會丟失,服務起來後還能找到訊息並在此傳送,訊息的持久化和訊息的傳送模型是沒有關係的。

訊息持久化的配置很方便的,所以其他的那些就不寫出來了,可以看看上一篇文章中的同步非同步實現方式。這裡只把持久化配置的列出來。

[html] view plain copy  print?
  1. <!-- spring 使用jmsTemplate來實現訊息的傳送和接受 -->
  2.     <beanid="jmsTemplate"class="org.springframework.jms.core.JmsTemplate"
    >
  3.         <propertyname="connectionFactory"ref="connectionFactory"></property>
  4.         <propertyname="defaultDestination"ref="destination"></property>
  5.         <propertyname="messageConverter">
  6.             <bean
  7.                 class="org.springframework.jms.support.converter.SimpleMessageConverter"
    />
  8.         </property>
  9.          <!--開啟訂閱模式-->
  10.          <propertyname="pubSubDomain"value="false"/>
  11.          <propertyname="sessionAcknowledgeMode"value="1"/>
  12.           <!-- deliveryMode, priority, timeToLive 的開關,要生效,必須配置explicitQosEnabled為true,預設false-->
  13.          <
    propertyname="explicitQosEnabled"value="true"/>
  14.          <!-- 傳送模式  DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久-->
  15.          <propertyname="deliveryMode"value="2"/>
  16.     </bean>

訊息持久化配置如上,具體持久化到資料庫還是檔案還是在訊息服務的activemq.xml中配置!

ok 訊息的持久化搞定了我們來看看Topic的主題持久化訂閱的實現。

Topic訊息持久化訂閱

通過之前的學習我們知道,訊息的持久化訂閱的要求:(1)、訊息持久化 (2)、訊息消費端要指定ClientID,同一時刻只能有一個ClientID相同的消費者連線消費,所以如果有多個消費者,則ClientID不能相同。下面來看看!

專案結構如下:


專案結構介紹:

1、一個訊息生產者,兩個訊息消費者和一個監聽類即MyMessageListener.java,對訊息的非同步處理和重Activemq時編寫的一樣!

2、三個配置檔案即訊息生產者的配置檔案和訊息消費者的配置檔案。

其他的就是之前的相關demo這裡相關的就上面1、2中提到的相關東西!

其實東西確實很少,我們來看看程式碼:

1、訊息生產者配置檔案即ApplicationContext3P.xml配置檔案:

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"
  4.     xmlns:context="http://www.springframework.org/schema/context"
  5.     xmlns:aop="http://www.springframework.org/schema/aop"xmlns:task="http://www.springframework.org/schema/task"
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.                   http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  8.                   http://www.springframework.org/schema/context  
  9.                   http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  10.                   http://www.springframework.org/schema/aop   
  11.                   http://www.springframework.org/schema/aop/spring-aop.xsd        
  12.                   http://www.springframework.org/schema/task  
  13.                  http://www.springframework.org/schema/task/spring-task-3.2.xsd  
  14.                  http://www.springframework.org/schema/tx   
  15.                  http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
  16.     <!--第三方工廠 -->
  17.     <beanid="targetConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
  18.         <propertyname="brokerURL"value="tcp://127.0.0.1:61616"/>
  19.         <propertyname="userName"value="admin"></property>
  20.         <propertyname="password"value="admin"></property>
  21.         <propertyname="useAsyncSend"value="true"/>
  22.     </bean>
  23.     <!-- ActiveMQ為我們提供了一個PooledConnectionFactory,通過往裡面注入一個ActiveMQConnectionFactory   
  24.         可以用來將Connection、Session和MessageProducer池化,這樣可以大大的減少我們的資源消耗,要依賴於 activemq-pool包 -->
  25.     <beanid="pooledConnectionFactory"class="org.apache.activemq.pool.PooledConnectionFactory">
  26.         <propertyname="connectionFactory"ref="targetConnectionFactory"/>
  27.         <propertyname="maxConnections"value="100"/>
  28.     </bean>
  29.     <!-- Spring用於管理真正的ConnectionFactory的ConnectionFactory -->
  30.     <beanid="connectionFactory"
  31.         class="org.springframework.jms.connection.SingleConnectionFactory">
  32.         <!-- 目標ConnectionFactory對應真實的可以產生JMS Connection的ConnectionFactory -->
  33.         <propertyname="targetConnectionFactory"ref="pooledConnectionFactory"/>
  34.     </bean>
  35.     <!-- topic目的地配置,其實不管是topic還是queue則他們的底層實現不同但是通過封裝api就差不多了,而在spring中更是簡單 -->
  36.     <beanid="destinationTopic"class="org.apache.activemq.command.ActiveMQTopic">
  37.         <constructor-argindex="0"value="spring-topic"/>
  38.     </bean>
  39.     <!-- spring 使用jmsTemplate來實現訊息的傳送和接受 -->
  40.     <

    相關推薦

    Spring+ActiveMQ訊息持久化Topic持久化訂閱

    訊息持久化就是將訊息儲存到磁碟,這樣的好處就是如果服務掛了,則訊息還儲存在磁碟不會丟失,服務起來後還能找到訊息並在此傳送,訊息的持久化和訊息的傳送模型是沒有關係的。 訊息持久化的配置很方便的,所以其他的那些就不寫出來了,可以看看上一篇文章中的同步非同步實現方式。

    ActiveMQ訊息機制[QUEUE/TOPIC]例項

    一. 點對點訊息機制[QUEUE] 首先得下載依賴activemq的jar包 生產者: package com.activemq.src; import javax.jms.Connection; import javax.jms.DeliveryMode; imp

    ActiveMQ訊息、收訊息持久化查詢佇列剩餘訊息數、出隊數的實現

    1.首先啟動activeMQ的服務 public class RunServer {           /** 啟動activeMQ服務&

    ActiveMQ中的訊息持久化和非持久化 以及 持久訂閱者 和 非持久訂閱者之間的區別與聯絡

    ①DeliveryMode 這是傳輸模式。ActiveMQ支援兩種傳輸模式:持久傳輸和非持久傳輸(persistent and non-persistent delivery),預設情況下使用的是持久傳輸。 可以通過MessageProducer類的 setDeliv

    JMS訊息持久化ActiveMQ訊息持久化到mySql資料庫中

    ActiveMQ5.8.0版本採用kahadb作為預設的訊息持久化方式。使用預設的持久化機制,我們不容易直接看到訊息究竟是如何持久的。ActiveMQ提供的JDBC持久化機制,能夠將持久化資訊儲存到資

    ActiveMQ Topic持久化訂閱

    log 通過 ssa comm generate url mysql client live MQ學習系列: 消息隊列概念與認知 ActiveMQ Topic消息重發 ActiveMQ Topic 消息持久化訂閱 一、持久化到文件(默認) 第一步:在${activem

    activemq訊息機制和持久化介紹

    前面一節簡單學習了activemq的使用,我們知道activemq的使用方式非常簡單有如下幾個步驟: 建立連線工廠 建立連線 建立會話 建立目的地 建立生產者或消費者 生產或消費訊息 關閉生產

    ActiveMQ實戰之 Topic釋出訂閱訊息

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    spring-mybatis MapperFactoryBean使用xml方式 (資料庫持久化三)

    xml配置方式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.

    ActiveMQ 訊息持久化

    生產端(訊息持久化): import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProducer; import java

    以SpringMVC框架為中心瘋狂擴充套件-07、傳送持久化ActiveMQ訊息

    1、在spring-activemq.xml的jmsTopicTemplate中加入 <!-- 傳送模式 DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久--> <p

    ActiveMQ支援多個topic訂閱訊息接收設定

    描述:最近做一個預警的功能,使用到ActiveMQ訊息訂閱功能,但是問題來了,頁面上有四個Topic訂閱訊息就接收不到訊息,接收一個topic訊息就沒問題。排查問題後,程式是沒問題的,問題應該出現在ActiveMQ配置檔案設定那塊。直接找到activemq.xml,如圖: ​ 原始碼: <broker

    ActiveMQ 訊息持久化到資料庫

    1:前言      這一段給公司開發訊息匯流排有機會研究ActiveMQ,今天撰文給大家介紹一下他的持久化訊息。本文只介紹三種方式,分別是持久化為檔案,MYSql,Oracle。下面逐一介紹。 A:持久化為檔案      這個你裝ActiveMQ時預設就是這種,只要

    ActiveMQ訊息持久化儲存策略

       ActiveMQ的核心是Java編寫的,也就是說如果服務端沒有Java執行環境ActiveMQ是無法執行的。ActiveMQ啟動時,啟動指令碼使用wrapper包裝器來啟動JVM。JVM相關的配置資訊在啟動目錄的“wrapper.conf”配置檔案中。各位讀者可以通過改變其中的配置項

    Activemq訊息持久化

    <bean id="ds-mysql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql

    spring activeMQ 整合(三): 確認機制ACK(收到訊息應該有一個迴應也就是確認答覆)

    之前寫的spring   activemq整合的demo   ,今天繼續完善一下這個demo,讓功能更強大。 繼上篇文章之後,我訊息傳送失敗後,可以重新發送了。但是至於別人有沒有收到,這就不得而而而知了。 這時候就要用到ACK確認機制了。 1.ACK機制:  

    JMS之activemq訊息持久化

    JMS 即 java message service 是為java提供了一種建立、傳送、接收訊息的通用方法。可以將複雜的系統進行業務分離,變成靈活的高度解耦合的佈局。同時對我們的日常業務需求開發,提供了非常靈活的業務解決方案。比如繳費還款送積分,送積分的業務邏輯不能影響到繳

    spring+activemq配置多個生產者多個消費者併發處理訊息

    先貼配置 <?xml version="1.0" encoding="UTF-8"?>    <beans xmlns="http://www.springframework.org/schema/beans"   xmlns:xsi="http://w

    ActiveMQ使用筆記(二)ActiveMQ訊息持久化

    <persistenceAdapter>   <mKahaDB directory="${activemq.base}/data/kahadb">     <filteredPersistenceAdapters>       <!-- match all queu

    初入activeMQspring+activeMQ的整合實現釋出訂閱

    *spring+activeMQ整合 一直想寫部落格,技術用的都太多,但是都不久,總是忘記,老大讓搞老專案,今天自己在公司搞了MQ,記錄一下: 介紹就不需要了,網上一大堆,我喜歡直接上乾貨,直接擼,看起來也爽。 spring的原理就不用說了,首先sprin