spring boot與activemq的結(jié)合使用

Paste_Image.png

這幾天試了試spring-jms結(jié)合activemq使用方法,項目架構(gòu)使用的是spring boot京腥。這里記下來,留著以后或許會使用。

使用的是spring-jms 4.2.3.RELEASE和activemq-client 5.14.1版本

1.關(guān)于jms和activemq

對jms和activemq不了解的可以先了解一下相關(guān)內(nèi)容惶楼,這里提供一下地址:

<<深入淺出JMS(一)--JMS基本概念>>

<<深入淺出JMS(二)--ActiveMQ簡單介紹以及安裝>>

2.pom增加jar包

有了上面的了解,我們就可以開始下面的使用

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-client</artifactId>
            <version>5.14.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
        </dependency>

3.spring boot配置

在這一步開始前诊杆,你需要在你的本地或遠(yuǎn)程安裝好activemq的客戶端歼捐,沒有安裝的百度或看下這篇文章
<<深入淺出JMS(二)--ActiveMQ簡單介紹以及安裝>>

#jms activemq
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=true
spring.activemq.pooled=false

上面配置了activemq的地址和用戶名和密碼

生產(chǎn)者

下面開始創(chuàng)建消息的生產(chǎn)者一方,這里我自定義了消息的實體對象晨汹、消息來源豹储、消息轉(zhuǎn)換器

生產(chǎn)者

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;

import javax.jms.Destination;

/**
 * info:
 * Created by shang on 2016/12/2.
 */
@Component
public class Producer {
    @Autowired
    private JmsTemplate jmsTemplate;

    public void send(SprayEvent event,Destination destination,SprayMessageConverter messageConverter) {
        jmsTemplate.setMessageConverter(messageConverter);
        jmsTemplate.setDefaultDestination(destination);
        jmsTemplate.convertAndSend(event);
    }


}

消息實體,這里使用的是隊列模式(Queue)

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.stereotype.Component;

/**
 * info:jms activemq的事件
 * Created by shang on 2016/12/3.
 */
@Component
public class SprayEvent {

    /**
     * 消息類型:隊列模式
     */
    public static final ActiveMQQueue SPRAY_TASK_EVENT_QUEUE=new ActiveMQQueue("SPRAY_TASK_EVENT_QUEUE");

    private Event event;

    private String text;

    public Event getEvent() {
        return event;
    }

    public void setEvent(Event event) {
        this.event = event;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public static enum Event {
        EVENT_TACK_SUCCESS; //定時任務(wù)執(zhí)行成功
    }
}

消息轉(zhuǎn)換器

import org.springframework.jms.support.converter.MessageConversionException;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * info:
 * Created by shang on 2016/12/3.
 */
@Component
public class SprayMessageConverter implements MessageConverter{
    @Override
    public Message toMessage(Object o, Session session) throws JMSException, MessageConversionException {
        Assert.notNull(o);
        TextMessage message = session.createTextMessage();
        if(o instanceof SprayEvent){
            SprayEvent event = (SprayEvent) o;
            message.setStringProperty("event", event.getEvent().toString());
            message.setText(event.getText());
        }
        return message;
    }

    @Override
    public Object fromMessage(Message message) throws JMSException, MessageConversionException {
        return message;
    }
}

消費者

消費者比較簡單淘这,只要使用@jmsListener 注解的方法即可監(jiān)聽指定事件
destination是生產(chǎn)者所發(fā)送的標(biāo)識剥扣,用法如下:

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

/**
 * info:
 * Created by shang on 2016/12/2.
 */
@Component
public class Consumer {

    @JmsListener(destination = "SPRAY_TASK_EVENT_QUEUE")
    public void receiveMessage(String text) {
        System.out.println("消費了: <" + text + ">");
    }
}

最后需要在spring boot啟動里加上@EnableJms 注解就可以

4.使用

在任意的方法里使用生產(chǎn)者的生產(chǎn)消息方法即可,如下方法:

   @Autowired
    private Producer producer;

    @Scheduled(cron = "0/20 * * * * ? ")
    public void sendJms() {
        System.out.println("每20秒執(zhí)行一次--------------------");
        SprayEvent event=new SprayEvent();
        event.setEvent(SprayEvent.Event.EVENT_TACK_SUCCESS);
        event.setText("Jms Message to activemq,my name is hello");
        producer.send(event,SprayEvent.SPRAY_TASK_EVENT_QUEUE,new SprayMessageConverter());

    }

5.結(jié)束

上面的內(nèi)容就是spring boot 里使用activemq的方法铝穷,如果是spring mvc項目就可能需要配置spring-xml文件
網(wǎng)上也有不少相關(guān)案例钠怯,感覺這兩篇文章不錯

<< 深入淺出JMS(三)--ActiveMQ簡單的HelloWorld實例>>

<<深入淺出JMS(四)--Spring和ActiveMQ整合的完整實例>>

有什么問題歡迎給我來信或留言!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曙聂,一起剝皮案震驚了整個濱河市晦炊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宁脊,老刑警劉巖断国,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榆苞,居然都是意外死亡稳衬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門坐漏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋彼,“玉大人,你說我怎么就攤上這事仙畦∈涮椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵慨畸,是天一觀的道長莱坎。 經(jīng)常有香客問我,道長寸士,這世上最難降的妖魔是什么檐什? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任碴卧,我火速辦了婚禮,結(jié)果婚禮上乃正,老公的妹妹穿的比我還像新娘住册。我一直安慰自己,他們只是感情好瓮具,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布荧飞。 她就那樣靜靜地躺著,像睡著了一般名党。 火紅的嫁衣襯著肌膚如雪叹阔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天传睹,我揣著相機(jī)與錄音耳幢,去河邊找鬼。 笑死欧啤,一個胖子當(dāng)著我的面吹牛睛藻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邢隧,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼店印,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了府框?” 一聲冷哼從身側(cè)響起吱窝,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讥邻,失蹤者是張志新(化名)和其女友劉穎迫靖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兴使,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡系宜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了发魄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盹牧。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖励幼,靈堂內(nèi)的尸體忽然破棺而出汰寓,到底是詐尸還是另有隱情,我是刑警寧澤苹粟,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布有滑,位于F島的核電站,受9級特大地震影響嵌削,放射性物質(zhì)發(fā)生泄漏毛好。R本人自食惡果不足惜望艺,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肌访。 院中可真熱鬧找默,春花似錦、人聲如沸吼驶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旨剥。三九已至咧欣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轨帜,已是汗流浹背魄咕。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蚌父,地道東北人哮兰。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像苟弛,于是被迫代替她去往敵國和親喝滞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容