最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot整合activemq的方法步驟

 更新時(shí)間:2019年01月18日 08:14:51   作者:小毛毛--專注后端  
這篇文章主要介紹了Springboot整合activemq的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天呢心血來潮,也有很多以前的學(xué)弟問到我關(guān)于消息隊(duì)列的一些問題,有個(gè)剛?cè)腴T,有的有問題都來問我,那么今天來說說如何快速入門mq。

一、首先說下什么是消息隊(duì)列?

1.消息隊(duì)列是在消息的傳輸過程中保存消息的容器。

二、為什么要用到消息隊(duì)列?

主要原因是由于在高并發(fā)環(huán)境下,由于來不及同步處理,請(qǐng)求往往會(huì)發(fā)生堵塞,比如說,大量的insert,update之類的請(qǐng)求同時(shí)到達(dá) MySQL ,直接導(dǎo)致無數(shù)的行鎖表鎖,甚至最后請(qǐng)求會(huì)堆積過多,從而觸發(fā)too many connections錯(cuò)誤。通過使用消息隊(duì)列,我們可以異步處理請(qǐng)求,從而緩解系統(tǒng)的壓力。

三、消息隊(duì)列都分為哪幾種?

1. ActiveMQ/ApolloMQ

優(yōu)點(diǎn):老牌的消息隊(duì)列,使用Java語言編寫。對(duì)JMS支持最好,采用多線程并發(fā),資源消耗比較大。如果你的主語言是Java,可以重點(diǎn)考慮。

缺點(diǎn):由于歷史悠久,歷史包袱較多,版本更新很緩慢。集群模式需要依賴Zookeeper實(shí)現(xiàn)。最新架構(gòu)的產(chǎn)品被命名為Apollo,號(hào)稱下一代ActiveMQ,目前案例較少。

2. RocketMQ/Kafka

優(yōu)點(diǎn):專為海量消息傳遞打造,主張使用拉模式,天然的集群、HA、負(fù)載均衡支持。話說還是那句話,適合不適合看你有沒有那么大的量。

缺點(diǎn):所謂魚和熊掌不可兼得,放棄了一些消息中間件的靈活性,使用的場(chǎng)景較窄,需關(guān)注你的業(yè)務(wù)模式是否契合,否則山寨變相使用很別扭。除此之外,RocketMQ沒有.NET下的客戶端可用。RocketMQ身出名門,但使用者不多,生態(tài)較小,畢竟消息量能達(dá)到這種體量的公司不多,你也可以直接去購(gòu)買阿里云的消息服務(wù)。Kafka生態(tài)完善,其代碼是用Scala語言寫成,可靠性比RocketMQ低一些。

3. RabbitMQ

優(yōu)點(diǎn):生態(tài)豐富,使用者眾,有很多人在前面踩坑。AMQP協(xié)議的領(lǐng)導(dǎo)實(shí)現(xiàn),支持多種場(chǎng)景。淘寶的MySQL集群內(nèi)部有使用它進(jìn)行通訊,OpenStack開源云平臺(tái)的通信組件,最先在金融行業(yè)得到運(yùn)用。

缺點(diǎn):Erlang代碼你Hold得住不? 雖然Erlang是天然集群化的,但RabbitMQ在高可用方面做起來還不是特別得心應(yīng)手,別相信廣告。

四、我們今天重要說下如何快速上手activemq,也是在mq中最容易上手的一種

1.首先我們先下載activemq  鏈接 http://activemq.apache.org/download.html

2.

3.下載對(duì)應(yīng)的版本

4.啟動(dòng)activemq(我這里是mac環(huán)境,windows可雙擊運(yùn)行)

出現(xiàn)這個(gè)說明mq已經(jīng)啟動(dòng)我可可以通過active默認(rèn)的端口號(hào)運(yùn)行https://http://localhost:8161/

這里看到他會(huì)alert一個(gè)登陸窗口 默認(rèn)賬號(hào)密碼都為admin

點(diǎn)擊Queues查看隊(duì)列是的消息,這樣我們activemq就算運(yùn)行了

那么現(xiàn)在我將它整合在springboot里,也十分簡(jiǎn)單 首先看下項(xiàng)目結(jié)構(gòu)

5.加入依賴 本次用的gradle

compile('org.springframework.boot:spring-boot-starter-activemq:2.1.1.RELEASE')

6.yml配置

spring:
 activemq:
  broker-url: tcp://localhost:61616
  user: admin
  password: admin

這里注意了配置的端口號(hào)和啟動(dòng)端口號(hào)不是一直的,默認(rèn)為61616,在conf的jetty.xml下課進(jìn)行查看也可以修改

咱們直接上代碼

7.Controller

package com.gd.acticemqtest.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * @DATA 2019-01-09 22:42
 * @Author 張國(guó)偉 WeChat:17630376104
 * @Description TODO
 */
@RestController
public class controllerDemo {

  @Autowired
  private JmsTemplate jmsTemplate;

  @RequestMapping("/sendMsg")
  public void sendMsg(String msg) {
    jmsTemplate.send("q2", new MessageCreator() {
      @Override
      public Message createMessage(Session session) throws JMSException {

        TextMessage textMessage = session.createTextMessage();
        textMessage.setText(msg);
        return textMessage;
      }
    });
  }

這里一定要注意的是JmsTemplate到底引用的那個(gè)包

jmsTemplate.send是向隊(duì)列里發(fā)送消息,并且為隊(duì)列起一個(gè)名字

package com.gd.acticemqtest.serive;

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

/**
 * @DATA 2019-01-09 22:54
 * @Author 張國(guó)偉 WeChat:17630376104
 * @Description TODO
 */
@Service
public class ActiveMsgListener {

  @JmsListener(destination = "q2")
  public void rctiveMsg(String message){
  System.out.println("------監(jiān)聽到activemq的數(shù)據(jù)"+message);
  }

}

jmsListener是spring的針對(duì)消息的監(jiān)聽器,當(dāng)mq里有數(shù)據(jù)后第一時(shí)間把消息監(jiān)聽到,我們跑一把試試

當(dāng)敲下enter那一刻,控制臺(tái)已經(jīng)把剛剛存進(jìn)去的消息給打印了出來

那這個(gè)時(shí)候我們?cè)賮砜聪耡ctivemq的服務(wù)中是否有消息

可以看到這時(shí)候隊(duì)列里已經(jīng)有了q2這個(gè)消息。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring MVC中使用Google kaptcha驗(yàn)證碼的方法詳解

    Spring MVC中使用Google kaptcha驗(yàn)證碼的方法詳解

    kaptcha 是一個(gè)非常實(shí)用的驗(yàn)證碼生成工具。有了它,你可以生成各種樣式的驗(yàn)證碼,因?yàn)樗强膳渲玫模旅孢@篇文章主要給大家介紹了關(guān)于Spring MVC中使用Google kaptcha驗(yàn)證碼的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • 通俗講解JVM的類加載機(jī)制

    通俗講解JVM的類加載機(jī)制

    這篇文章主要介紹了JVM的類加載機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • Java消息隊(duì)列RabbitMQ入門詳解

    Java消息隊(duì)列RabbitMQ入門詳解

    這篇文章主要介紹了Java消息隊(duì)列RabbitMQ入門詳解,RabbitMQ是使用Erlang語言開發(fā)的開源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議 來實(shí)現(xiàn),AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布 /訂閱)、可靠性、安全,需要的朋友可以參考下
    2023-07-07
  • Spring Boot/Angular整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄功能

    Spring Boot/Angular整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄功能

    Keycloak新的發(fā)行版命名為Quarkus,專為GraalVM和OpenJDK HotSpot量身定制的一個(gè)Kurbernetes Native Java框架,計(jì)劃2019年底正式發(fā)布。這篇文章主要介紹了Spring Boot/Angular整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄,需要的朋友可以參考下
    2019-10-10
  • Springdoc替換swagger的實(shí)現(xiàn)步驟分解

    Springdoc替換swagger的實(shí)現(xiàn)步驟分解

    最近在spring看到的,spring要對(duì)api文檔動(dòng)手了,有些人說swagger不好用,其實(shí)也沒那么不好用,有人說代碼還是有點(diǎn)侵入性,這倒是真的,我剛試了springdoc可以說還是有侵入性但是也可以沒有侵入性,這就看你對(duì)文檔有什么要求了
    2023-02-02
  • 詳解使用Java代碼讀取并比較本地兩個(gè)txt文件區(qū)別

    詳解使用Java代碼讀取并比較本地兩個(gè)txt文件區(qū)別

    這篇文章主要為大家介紹了使用Java代碼讀取并比較本地兩個(gè)txt文件區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之貪心算法

    Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之貪心算法

    我們可能在好多地方都會(huì)聽到貪心算法這一概念,并且它的算法思想也比較簡(jiǎn)單就是說算法只保證局部最優(yōu),進(jìn)而達(dá)到全局最優(yōu)。但我們實(shí)際編程的過程中用的并不是很多,究其原因可能是貪心算法使用的條件比較苛刻,所要解決的問題必須滿足貪心選擇性質(zhì)
    2022-02-02
  • SpringSecurity在單機(jī)環(huán)境下使用方法詳解

    SpringSecurity在單機(jī)環(huán)境下使用方法詳解

    本文詳細(xì)介紹了SpringSecurity和SpringBoot的整合過程,包括配置用戶認(rèn)證、JSP頁面的使用、數(shù)據(jù)庫認(rèn)證以及授權(quán)功能的實(shí)現(xiàn),感興趣的朋友一起看看吧
    2025-02-02
  • JAVA中的延遲隊(duì)列DelayQueue應(yīng)用解析

    JAVA中的延遲隊(duì)列DelayQueue應(yīng)用解析

    這篇文章主要介紹了JAVA中的延遲隊(duì)列DelayQueue應(yīng)用解析,DelayQueue是一個(gè)根據(jù)元素的到期時(shí)間來排序的隊(duì)列,而并非是一般的隊(duì)列那樣先進(jìn)先出,最快過期的元素排在隊(duì)首,越晚到期的元素排得越后,需要的朋友可以參考下
    2023-12-12
  • Spring核心之IOC與bean超詳細(xì)講解

    Spring核心之IOC與bean超詳細(xì)講解

    IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-10-10

最新評(píng)論

广平县| 色达县| 衡阳市| 肃宁县| 内乡县| 和政县| 临沭县| 鄄城县| 十堰市| 吉木萨尔县| 陆川县| 阿鲁科尔沁旗| 依兰县| 固阳县| 叶城县| 瑞金市| 荔浦县| 平塘县| 灵台县| 东港市| 绥棱县| 沂南县| 泾源县| 侯马市| 延吉市| 岑巩县| 麻城市| 金溪县| 云南省| 甘肃省| 寻乌县| 昌宁县| 瑞金市| 铜梁县| 金沙县| 达州市| 绥芬河市| 枣强县| 高青县| 四会市| 象山县|