中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

activemq怎么在Springboot中使用

發布時間:2021-05-18 17:56:09 來源:億速云 閱讀:199 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關activemq怎么在Springboot中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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

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

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

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

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

1. ActiveMQ/ApolloMQ

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

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

2. RocketMQ/Kafka

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

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

3. RabbitMQ

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

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

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

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

2. activemq怎么在Springboot中使用

3.下載對應的版本

activemq怎么在Springboot中使用

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

activemq怎么在Springboot中使用

activemq怎么在Springboot中使用

activemq怎么在Springboot中使用

出現這個說明mq已經啟動我可可以通過active默認的端口號運行https://http://localhost:8161/

activemq怎么在Springboot中使用

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

activemq怎么在Springboot中使用

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

activemq怎么在Springboot中使用

那么現在我將它整合在springboot里,也十分簡單 首先看下項目結構

activemq怎么在Springboot中使用

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是向隊列里發送消息,并且為隊列起一個名字

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("------監聽到activemq的數據"+message);
  }

}

jmsListener是spring的針對消息的監聽器,當mq里有數據后第一時間把消息監聽到,我們跑一把試試

activemq怎么在Springboot中使用

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

activemq怎么在Springboot中使用

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

activemq怎么在Springboot中使用

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

關于activemq怎么在Springboot中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荔波县| 通许县| 连山| 南靖县| 濉溪县| 苍南县| 响水县| 巴马| 德兴市| 绥滨县| 凌云县| 长海县| 衡东县| 米林县| 洪泽县| 织金县| 麦盖提县| 浏阳市| 武邑县| 崇明县| 福贡县| 丰县| 海盐县| 布拖县| 合作市| 武强县| 航空| 留坝县| 三台县| 恩平市| 云浮市| 吉林省| 杭锦后旗| 沈阳市| 台南县| 越西县| 宁国市| 仲巴县| 辉南县| 定日县| 灵寿县|