spring集成activemq

1裤纹、概述

  1. 消息服務:一個中間件,用于解決兩個或多個程序之間的耦合丧没,底層由Java 實現鹰椒。
  2. 優(yōu)勢:異步、可靠
  3. 消息模型:點對點呕童,發(fā)布/訂閱
  4. JMS中的對象
  1. 多種語言和協議編寫客戶端漆际。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
  2. 完全支持JMS1.1和J2EE 1.4規(guī)范 (持久化,XA消息,事務)
  3. 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統(tǒng)里面去,而且也支持Spring2.0的特性
  4. 通過了常見J2EE服務器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業(yè)服務器上
  5. 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
  6. 支持通過JDBC和journal提供高速的消息持久化
  7. 從設計上保證了高性能的集群,客戶端-服務器,點對點
  8. 支持Ajax
  9. 支持與Axis的整合
  10. 可以很容易得調用內嵌JMS provider,進行測試

在接下來的這篇博客中夺饲,我會和大家一起來整合Spring 和ActiveMq奸汇,這篇博文,我們基于Spring+JMS+ActiveMQ+Tomcat,實現了Point-To-Point的異步隊列消息和PUB/SUB(發(fā)布/訂閱)模型往声,簡單實例擂找,不包含任何業(yè)務。

2浩销、項目結構

image.png

Spring 核心依賴 ActiveMq core和pool java servlet 相關依賴 fastjson依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.quwei.activeMQ</groupId>
<artifactId>activeMQ-test</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>activeMQ-test Maven Webapp</name>
<url>http://maven.apache.org</url>


<properties>
<springframework>4.0.0.RELEASE</springframework>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<!--spring對activemq的支持-->
<!-- JSP相關 -->
<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <scope>provided</scope>
  <version>2.5</version>
</dependency>

<!-- spring -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>${springframework}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${springframework}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>${springframework}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${springframework}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jms</artifactId>
  <version>${springframework}</version>
</dependency>


<!-- xbean 如<amq:connectionFactory /> -->
<dependency>
  <groupId>org.apache.xbean</groupId>
  <artifactId>xbean-spring</artifactId>
  <version>3.16</version>
</dependency>

<!-- activemq -->
<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-core</artifactId>
  <version>5.7.0</version>
</dependency>
<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-pool</artifactId>
  <version>5.12.1</version>
</dependency>

<!--添加springmvc對fastjson的支持-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.38</version>
</dependency>

</dependencies>
<build>
<finalName>activeMQ-test</finalName>
</build>
</project>

spring配置贯涎,這里只是測試,所以spring只有一個掃包撼嗓,springmvc也只有常用配置

spring配置

image.png

springmvc配置

image.png

activemq配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd">

<context:component-scan base-package="com.quwei" />
<mvc:annotation-driven />

<amq:connectionFactory id="amqConnectionFactory"
                       brokerURL="tcp://127.0.0.1:61616"
                       userName="admin"
                       password="admin" />

<!-- 配置JMS連接工長 -->
<bean id="connectionFactory"
      class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="amqConnectionFactory" />
    <property name="sessionCacheSize" value="100" />
</bean>

<!-- 定義消息隊列(Queue) -->
<bean id="demoQueueDestination" class="org.apache.activemq.command.ActiveMQQueue">
    <!-- 設置消息隊列的名字 -->
    <constructor-arg>
        <value>Jaycekon</value>
    </constructor-arg>
</bean>

<!-- 配置JMS模板(Queue)柬采,Spring提供的JMS工具類,它發(fā)送且警、接收消息粉捻。 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestination" ref="demoQueueDestination" />
    <property name="receiveTimeout" value="10000" />
    <!-- true是topic,false是queue斑芜,默認是false肩刃,此處顯示寫出false -->
    <property name="pubSubDomain" value="false" />
</bean>

</beans>

tomcat配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

     version="3.0">

<display-name>Archetype Created Web Application</display-name>


<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml;
</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

3.代碼

服務者

image.png

消費者

image.png

使用一個接口來測試

image.png
image.png

4.測試

請求接口

image.png

請求接口接收消息

image.png
image.png

查看activemq管理平臺

image.png

只有一個消費者 因為前面測試過4次 所以這個一共消費了5條消息

activemq和spring集成簡單的測試就到這個了 方便自己復習 希望對你有用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子盈包,更是在濱河造成了極大的恐慌沸呐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢燥,死亡現場離奇詭異崭添,居然都是意外死亡,警方通過查閱死者的電腦和手機叛氨,發(fā)現死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門呼渣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寞埠,你說我怎么就攤上這事屁置。” “怎么了仁连?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵蓝角,是天一觀的道長。 經常有香客問我饭冬,道長使鹅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任伍伤,我火速辦了婚禮并徘,結果婚禮上,老公的妹妹穿的比我還像新娘扰魂。我一直安慰自己麦乞,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布劝评。 她就那樣靜靜地躺著姐直,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒋畜。 梳的紋絲不亂的頭發(fā)上声畏,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音姻成,去河邊找鬼插龄。 笑死,一個胖子當著我的面吹牛科展,可吹牛的內容都是我干的均牢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼才睹,長吁一口氣:“原來是場噩夢啊……” “哼徘跪!你這毒婦竟也來了甘邀?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤垮庐,失蹤者是張志新(化名)和其女友劉穎松邪,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體哨查,經...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡逗抑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了寒亥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锋八。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖护盈,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情羞酗,我是刑警寧澤腐宋,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站檀轨,受9級特大地震影響胸竞,放射性物質發(fā)生泄漏。R本人自食惡果不足惜参萄,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一卫枝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讹挎,春花似錦校赤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怜奖,卻和暖如春浑测,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歪玲。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工迁央, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滥崩。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓岖圈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親夭委。 傳聞我的和親對象是個殘疾皇子幅狮,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容