欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot整合activemq的方法步驟

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

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

一、首先說下什么是消息隊列?

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

二、為什么要用到消息隊列?

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

三、消息隊列都分為哪幾種?

1. ActiveMQ/ApolloMQ

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

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

2. RocketMQ/Kafka

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

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

3. RabbitMQ

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

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

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

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

2.

3.下載對應的版本

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

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

這里看到他會alert一個登陸窗口 默認賬號密碼都為admin

點擊Queues查看隊列是的消息,這樣我們activemq就算運行了

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

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

這里注意了配置的端口號和啟動端口號不是一直的,默認為61616,在conf的jetty.xml下課進行查看也可以修改

咱們直接上代碼

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 張國偉 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到底引用的那個包

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

package com.gd.acticemqtest.serive;

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

/**
 * @DATA 2019-01-09 22:54
 * @Author 張國偉 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的針對消息的監(jiān)聽器,當mq里有數(shù)據(jù)后第一時間把消息監(jiān)聽到,我們跑一把試試

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

那這個時候我們再來看下activemq的服務中是否有消息

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot實戰(zhàn):Spring如何找到對應轉(zhuǎn)換器優(yōu)雅使用枚舉參數(shù)

    SpringBoot實戰(zhàn):Spring如何找到對應轉(zhuǎn)換器優(yōu)雅使用枚舉參數(shù)

    這篇文章主要介紹了SpringBoot實戰(zhàn)中Spring是如何找到對應轉(zhuǎn)換器優(yōu)雅的使用枚舉參數(shù),文中附有詳細的實例代碼有需要的朋友可以參考下,希望可以有所幫助
    2021-08-08
  • JVM處理未捕獲異常的方法詳解

    JVM處理未捕獲異常的方法詳解

    這篇文章主要給大家介紹了關于JVM處理未捕獲異常的相關資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Java編寫日歷表的3種方式

    Java編寫日歷表的3種方式

    這篇文章主要為大家詳細介紹了Java編寫日歷表的3種方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例

    JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例

    cookie是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段。Cookie的目的就是為用戶帶來方便,為網(wǎng)站帶來增值。這篇文章主要介紹了JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例,需要的朋友可以參考下
    2017-06-06
  • Spring注解@EnableWebMvc使用的坑點及解析

    Spring注解@EnableWebMvc使用的坑點及解析

    這篇文章主要介紹了Spring注解@EnableWebMvc使用的坑點及解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot 運行 jar 包讀取外部配置文件的問題

    springboot 運行 jar 包讀取外部配置文件的問題

    這篇文章主要介紹了springboot 運行 jar 包讀取外部配置文件,本文主要描述linux系統(tǒng)執(zhí)行jar包讀取jar包同級目錄的外部配置文件,主要分為兩種方法,每種方法通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • Java分支結(jié)構和循環(huán)結(jié)構原理與用法詳解

    Java分支結(jié)構和循環(huán)結(jié)構原理與用法詳解

    這篇文章主要介紹了Java分支結(jié)構和循環(huán)結(jié)構原理與用法,結(jié)合實例形式分析了java分支結(jié)構、循環(huán)結(jié)構、跳轉(zhuǎn)語句等相關概念、原理、使用技巧與操作注意事項,需要的朋友可以參考下
    2020-02-02
  • 詳解Java 中的 AutoCloseable 接口

    詳解Java 中的 AutoCloseable 接口

    本文對 try-with-resources 語法進行了較為深入的剖析,驗證了其為一種語法糖,同時給出了其實際的實現(xiàn)方式的反編譯結(jié)果,相信你在看完本文后,關于 AutoCloseable 的使用你會有新的收獲。
    2020-11-11
  • Java中Lambda表達式基礎及使用

    Java中Lambda表達式基礎及使用

    這篇文章主要介紹了Lambda 是JDK 8 的重要新特性。它允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進方法中),使用 Lambda 表達式可以使代碼變的更加簡潔緊湊,使Java代碼更加優(yōu)雅,感興趣的小伙伴一起來學習吧
    2021-08-08
  • Java String類詳解_動力節(jié)點Java學院整理

    Java String類詳解_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java String類詳解,本文經(jīng)多方資料的收集整理和歸納,最終撰寫成文,非常不錯,值得收藏,需要的的朋友參考下
    2017-04-04

最新評論