1. 程式人生 > >springcloud實戰之13 rabbitmq訊息匯流排(bus)

springcloud實戰之13 rabbitmq訊息匯流排(bus)

rabbitmq是實現了高階訊息佇列協議(amqp)的開源訊息代理軟體,也成為面向訊息的中介軟體。RabbitMQ伺服器是用高效能,可伸縮而聞名的Erlang語言編寫而成的,其叢集和故障轉移是構建在開放電信平臺框架上的。

RabbitMQ的安裝這裡不重複說明,可以參考centos7自學之7-rabbitmq的安裝與配置,這裡介紹spring cloud使用RabbitMQ。

建立工程(springcloud-server-bus-rabbitmq)

新增依賴

<parent>
    <groupId>org.springframework.boot</groupId
>
<artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath /> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId
>
<artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>

建立入口類

@SpringBootApplication
public class SpringCloudServerBusRabbitmq {
    public static void main(String[] args) {
        new SpringApplicationBuilder(SpringCloudServerBusRabbitmq.class)
                .web(true)
                .run(args)
                ;
    }
}

建立配置檔案

spring:
  rabbitmq:
    host: 192.168.175.128
    port: 5672
    username: admin
    password: admin
  application:
    name: springcloud-server-bus-rabbitmq

建立配置類

@Configuration
public class RabbitMqConfig {

    public static final String queueName = "springcloud-server-bus-rabbitmq" ;
    public Queue rabbitMqQueue(){
        return new Queue(queueName);
    }
}

建立生產者

@Component
public class Prodecer {

    private final Logger _logger = LoggerFactory.getLogger(this.getClass()) ;
    @Autowired
    private AmqpTemplate rabbitMqTemplate ;

    public void send(){
        String context = "hello" + new Date() ;
        _logger.info("正在向佇列傳送訊息:{}",context);
        this.rabbitMqTemplate.convertAndSend(RabbitMqConfig.queueName,context);
    }
}

建立消費者

@Component
@RabbitListener(queues = RabbitMqConfig.queueName)
public class Consumer {
    private final Logger _logger = LoggerFactory.getLogger(this.getClass()) ;

    @RabbitHandler
    public void consumer(String message){
        _logger.info("從佇列獲取到的訊息:{}",message);
    }
}

建立web介面

@Controller
@RequestMapping("/api/rest")
public class RestfulController {

    @Autowired
    Prodecer prodecer ;
    @GetMapping("/message")
    public void message(){
        prodecer.send();
    }
}

建立結構圖如下

這裡寫圖片描述

執行專案

啟動springcloud-server-bus-rabbitmq。

這裡寫圖片描述

原始碼

歷史文章

相關推薦

springcloud實戰13 rabbitmq訊息匯流排bus

rabbitmq是實現了高階訊息佇列協議(amqp)的開源訊息代理軟體,也成為面向訊息的中介軟體。RabbitMQ伺服器是用高效能,可伸縮而聞名的Erlang語言編寫而成的,其叢集和故障轉移是構建在開放電信平臺框架上的。 RabbitMQ的安裝這裡不重複說明,

springcloud實戰9 斷路器-叢集監控turbine

上一篇介紹了單例的服務監控,本章介紹對叢集的監控。通過引入turbine,通過它來彙集監控資訊,並將聚合後的資訊提供給Hystrix Dashboard來集中展示和監控。 其工作架構圖如下: 構建springcloud-hystrix-turbine

spring cloud 中訊息匯流排bus使用

訊息系統 說到訊息系統大家耳熟能詳的幾個一般來說都有各自適用的場景,我們這裡簡單說一下幾個常見的訊息系統。 ActiveMQ是比較老牌的訊息系統,當然了不一定是大家第一個熟知的訊息系統,因為現在電商、網際網路規模越來越大,不斷進入程式設計師眼簾的大多是K

Qt實戰開發CSDN下載助手 1

助手 track 下載 賬戶 content 多線程下載 功能 博客 style 這次實戰,我們須要開發一款CSDN下載助手。它具備下面功能: 1) . 可以正常登錄CSDN賬戶 2) . 可以依據用戶提供的資源下載頁面地址解析出真實地址 ( 當然啦。 你的賬號積分

【轉載】Vue 2.x 實戰後臺管理系統開發

null element asc 其他 就會 ans 目錄 asi all 2. 常見需求 01. 父子組件通信 a. 父 -> 子(父組件傳遞數據給子組件) 使用 props,具體查看文檔 - 使用 Prop 傳遞數據(cn.vuejs.org/v2/guide

Spring Cloud Bus(訊息匯流排)1

訊息代理 訊息代理是一種訊息驗證、傳輸、路由的架構模式。它在應用程式之間起到通訊排程並最小化應用之間的依賴作用,使得應用程式可以高效地解耦通訊過程。訊息代理是一箇中間件產品,它的核心是一個訊息的路由程式,用來實現接受和分發訊息,並根據設定好的訊息處理流來轉發給正確的應用。它包括獨立的通訊和訊

安卓專案實戰CoordinatorLayout實現頁面特效

效果圖如下: material design控制元件簡介: 轉載自:https://blog.csdn.net/gitzzp/article/details/52573068 CoordinatorLayout CoordinatorLayout:協調者佈局。它是support

安卓專案實戰Glide 3高手養成:Glide的回撥與監聽

前言 通過前面兩篇的講解,我們對於Glide的一些使用都有了基本瞭解,知道了使用Glide載入圖片只需要一行程式碼即可: Glide.with(this).load(url).into(imageView); 而在這一行程式碼的背後,Glide幫我們執行了成千上萬行的邏輯。

安卓專案實戰Glide 3高手養成:Glide強大的圖片變換功能

使用Glide時普遍會遇到的一個問題,如何解決? 首先我們嘗試使用Glide來載入一張圖片,圖片URL地址是:https://www.baidu.com/img/bd_logo1.png 這是百度首頁logo的一張圖片,圖片尺寸是540*258畫素。 接下來我們編寫一個非常簡單的佈局檔案

安卓專案實戰Glide 3高手養成:Glide的基本使用

前言 現在Android上的圖片載入框架非常成熟,從最早的老牌圖片載入框架UniversalImageLoader,到後來Google推出的Volley,再到後來的新興軍Glide和Picasso,當然還有Facebook的Fresco。每一個都非常穩定,功能也都十分強大。但是它們的使用

RabbitMQ訊息佇列:”Hello, World“

原文地址:http://blog.csdn.net/anzhsoft/article/details/19570187    本文將使用Python(pika 0.9.8)實現從Producer到Consumer傳遞資料”Hello, World“。      首先複習一下上篇所學:RabbitMQ實現

RabbitMQ訊息佇列: Detailed Introduction 詳細介紹

原文地址:http://blog.csdn.net/anzhsoft/article/details/19563091 1. 歷史     RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue )的開源實現。AMQP 的

RabbitMQ訊息佇列:Publisher的訊息確認機制

       在前面的文章中提到了queue和consumer之間的訊息確認機制:通過設定ack。那麼Publisher能不到知道他post的Message有沒有到達queue,甚至更近一步,是否被某個

基於Python語言使用RabbitMQ訊息佇列

釋出/訂閱 前面的教程中我們已經建立了一個工作佇列。在一個工作佇列背後的假設是每個任務恰好會傳遞給一個工人。在這一部分裡我們會做一些完全不同的東西——我們會發送訊息給多個消費者。這就是所謂的“釋出/訂閱”模式。 為了解釋這種模式,我們將會構建一個簡單的日誌系

RabbitMQ訊息佇列 fanout 廣播模式

先粘程式碼 生產者 ConnectionFactory connectionFactory = new ConnectionFactory(); Connection connection = connectionFa

OpenStack設計與實現訊息匯流排AMQP

在西方有一句諺語,叫做“Don’t Reinvent the Wheel!”。直譯過來就是不要在重新發明輪子了。也就是說我們應該避免做一些重複性的工作,如果一個東西別人已經做過了,那麼我們拿來直接用就行了,沒有必要重新制作,這一點在軟體開發裡尤為突出。所以在Op

訊息匯流排MQ知多少

1 什麼時候用MQ? 1.1 MQ的基本概念   訊息匯流排(Message Queue,MQ),是一種跨程序的通訊機制,用於在上下游之間傳遞訊息。MQ是一種常見的上下游“邏輯解耦+物理解耦”的訊息通訊服務,訊息傳送上游只需要依賴MQ,邏輯上和物理上都不

C++實戰OpenCL矩陣相乘優化

前言 上一篇文章,分析了簡單的矩陣相乘在opencl裡面的優化kernel程式碼,每個work-item只負責計算結果矩陣的一個元素。下一步準備每次計算出結果矩陣的塊元素,看看計算時間是如何。 具體分析 這裡引入opencl記憶體的概念: 比較常

基於Python語言使用RabbitMQ訊息佇列

工作佇列 在第一節我們寫了程式來向命名佇列傳送和接收訊息 。在本節我們會建立一個工作佇列(Work Queue)用來在多個工人(worker)中分發時間消耗型任務(time-consuming tasks)。 工作佇列(又叫做: Task Queues)背後

Vue 2.x 實戰後臺管理系統開發

1. 導語 該文章將從頭到尾梳理我是如何使用 Vue 2 開發一個後臺管理專案的,我會將自己遇到的問題貼出,希望可以幫助到其他人。 2. 開發前須知 我的後臺管理系統專案運用瞭如下框架/外掛: Vue 2.x —— 專案所使用的 js 框架