Spring+ActiveMQ訊息持久化,Topic持久化訂閱
訊息持久化就是將訊息儲存到磁碟,這樣的好處就是如果服務掛了,則訊息還儲存在磁碟不會丟失,服務起來後還能找到訊息並在此傳送,訊息的持久化和訊息的傳送模型是沒有關係的。
訊息持久化的配置很方便的,所以其他的那些就不寫出來了,可以看看上一篇文章中的同步非同步實現方式。這裡只把持久化配置的列出來。
[html] view plain copy print?- <!-- spring 使用jmsTemplate來實現訊息的傳送和接受 -->
-
<beanid="jmsTemplate"class="org.springframework.jms.core.JmsTemplate"
- <propertyname="connectionFactory"ref="connectionFactory"></property>
- <propertyname="defaultDestination"ref="destination"></property>
- <propertyname="messageConverter">
- <bean
-
class="org.springframework.jms.support.converter.SimpleMessageConverter"
- </property>
- <!--開啟訂閱模式-->
- <propertyname="pubSubDomain"value="false"/>
- <propertyname="sessionAcknowledgeMode"value="1"/>
- <!-- deliveryMode, priority, timeToLive 的開關,要生效,必須配置explicitQosEnabled為true,預設false-->
-
<
- <!-- 傳送模式 DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久-->
- <propertyname="deliveryMode"value="2"/>
- </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?- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/task
- http://www.springframework.org/schema/task/spring-task-3.2.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
- <!--第三方工廠 -->
- <beanid="targetConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
- <propertyname="brokerURL"value="tcp://127.0.0.1:61616"/>
- <propertyname="userName"value="admin"></property>
- <propertyname="password"value="admin"></property>
- <propertyname="useAsyncSend"value="true"/>
- </bean>
- <!-- ActiveMQ為我們提供了一個PooledConnectionFactory,通過往裡面注入一個ActiveMQConnectionFactory
- 可以用來將Connection、Session和MessageProducer池化,這樣可以大大的減少我們的資源消耗,要依賴於 activemq-pool包 -->
- <beanid="pooledConnectionFactory"class="org.apache.activemq.pool.PooledConnectionFactory">
- <propertyname="connectionFactory"ref="targetConnectionFactory"/>
- <propertyname="maxConnections"value="100"/>
- </bean>
- <!-- Spring用於管理真正的ConnectionFactory的ConnectionFactory -->
- <beanid="connectionFactory"
- class="org.springframework.jms.connection.SingleConnectionFactory">
- <!-- 目標ConnectionFactory對應真實的可以產生JMS Connection的ConnectionFactory -->
- <propertyname="targetConnectionFactory"ref="pooledConnectionFactory"/>
- </bean>
- <!-- topic目的地配置,其實不管是topic還是queue則他們的底層實現不同但是通過封裝api就差不多了,而在spring中更是簡單 -->
- <beanid="destinationTopic"class="org.apache.activemq.command.ActiveMQTopic">
- <constructor-argindex="0"value="spring-topic"/>
- </bean>
- <!-- spring 使用jmsTemplate來實現訊息的傳送和接受 -->
-
<
相關推薦
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
初入activeMQ,spring+activeMQ的整合實現釋出訂閱
*spring+activeMQ整合 一直想寫部落格,技術用的都太多,但是都不久,總是忘記,老大讓搞老專案,今天自己在公司搞了MQ,記錄一下: 介紹就不需要了,網上一大堆,我喜歡直接上乾貨,直接擼,看起來也爽。 spring的原理就不用說了,首先sprin