1. 程式人生 > >RabbitMQ的簡單示例(一)

RabbitMQ的簡單示例(一)

首先匯入jar包

這裡寫圖片描述

RabbitMQ示例圖示

其中P代表生產者、C表示消費者、中間紅色部分代表訊息佇列

這裡寫圖片描述

生產者程式碼如下:

package com.rabbit;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
*
* 類名稱:Test01
* 類描述:傳送訊息
* 建立人:wmh
*
*/
public class Test01 {

public static void main(String[] args) throws IOException, TimeoutException {  

    //建立連結工廠
    ConnectionFactory connFac = new ConnectionFactory() ;  

    //預設連結的主機名,RabbitMQ-Server安裝在本機,所以可以直接用127.0.0.1 
    connFac.setHost("127.0.0.1");  

    //建立連結   
    Connection conn = connFac.newConnection() ;  

    //建立資訊管道  
    Channel channel = conn.createChannel() ;  

    // 建立一個名為queue01的佇列,防止佇列不存在   
    String queueName = "queue01" ;  

    //進行資訊宣告        1.佇列名2.是否持久化,3是否侷限與連結,4不再使用是否刪除,5其他的屬性
    channel.queueDeclare(queueName, false, false, false, null) ; 
    String msg = "Hello World!";  

    //傳送訊息  
    // 在RabbitMQ中,訊息是不能直接傳送到佇列,它需要傳送到交換器(exchange)中。
    // 第一引數空表示使用預設exchange,第二引數表示傳送到的queue,第三引數是傳送的訊息是(位元組陣列)
    channel.basicPublish("", queueName , null , msg.getBytes());  

    System.out.println("傳送  message[" + msg + "] to "+ queueName +" success!");  

    //關閉管道
    channel.close();  
    //關閉連線
    conn.close();   
}  

}

傳送訊息完成,效果如下:

控制檯中顯示:
這裡寫圖片描述

佇列中顯示:
這裡寫圖片描述

消費者程式碼如下:

package com.rabbit;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;

/**
*
* 類名稱:Test02
* 類描述:接受訊息
* 建立人:wmh
*
*/

public class Test02 {

public static void main(String[] args) throws IOException, ShutdownSignalException,
ConsumerCancelledException, InterruptedException, TimeoutException {  

    // 建立連結工廠
    ConnectionFactory connFac = new ConnectionFactory() ;  

    //預設連結的主機名,RabbitMQ-Server安裝在本機,所以可以直接用127.0.0.1 
    connFac.setHost("127.0.0.1");  

    //建立連結    
    Connection conn = connFac.newConnection() ;  

    //建立資訊管道  
    Channel channel = conn.createChannel() ;  

    //定義Queue名稱  
    String queueName = "queue01";  
    //1.佇列名2.是否持久化,3是否侷限與連結,4不再使用是否刪除,5其他的屬性
    channel.queueDeclare(queueName, false, false, false, null) ;  

    //上面的部分,與Test01是一樣的  

    //宣告一個消費者,配置好獲取訊息的方式  
    QueueingConsumer consumer = new QueueingConsumer(channel) ;  
    channel.basicConsume(queueName, true, consumer) ;  

    //迴圈獲取訊息  
    while(true){  

        //迴圈獲取資訊  
        //指向下一個訊息,如果沒有會一直阻塞
        Delivery delivery = consumer.nextDelivery() ;  

        String msg = new String(delivery.getBody()) ;    

        System.out.println("接收 message[" + msg + "] from " + queueName);  
    }  
}

}

接受訊息完成,效果如下:

控制檯中顯示:
這裡寫圖片描述

佇列中顯示:
這裡寫圖片描述

相關推薦

RabbitMQ簡單示例

首先匯入jar包 RabbitMQ示例圖示 其中P代表生產者、C表示消費者、中間紅色部分代表訊息佇列 生產者程式碼如下: package com.rabbit; import java.io.IOException; import jav

vue-router單頁應用簡單示例

問題 clas 做了 設置 new scope 文件的 log target 請先完成了項目初始化,具體請看我另一篇博文。vue項目初始化 看一下完成的效果圖,很典型的單頁應用。 .vue後綴名的單文件組件 這裏先說一下我對組件的理解。組件,顧名思義就是一組元素組成的

LVS的簡單示例

LVS的簡單示例(一)LVS的簡單示例 1.使用NAT模型的TCP協議類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin; 必要條件:三臺主機(一個調度器兩個服務器) 聲明:172.16.1.11作為調度器,192.168.100.2和192.168.100.3

springMVC原始碼分析--異常處理機制HandlerExceptionResolver簡單示例

springMVC對Controller執行過程中出現的異常提供了統一的處理機制,其實這種處理機制也簡單,只要丟擲的異常在DispatcherServlet中都會進行捕獲,這樣就可以統一的對異常進行處理。        springMVC提供了一個HandlerExcepti

RabbitMQ入門及常用的5種模式的簡單使用

RabbitMQ是一個非常常用也非常強大的訊息中介軟體,主要用於應用與應用之間的通訊,有五種常見的使用方式,分別是:簡單模式,工作模式,釋出訂閱模式,路由模式以及萬用字元模式,這裡主要是簡單模式和工作模式!package cn.itcast.rabbitmq.simple;i

《大話設計模式》Java程式碼示例簡單工廠方法

簡單工廠模式(Simple Factory):也叫靜態工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。 package simplefactory; /** * 簡單工廠方法(Simple Factory) * 簡單運算工廠類 */ p

RabbitMQ使用教程RabbitMQ環境安裝配置及Hello World示例

你是否聽說過或者使用過佇列? 你是否聽說過或者使用過訊息佇列? 你是否聽說過或者使用過RabbitMQ? 提到這幾個詞,用過的人,也許覺得很簡單,沒用過的人,也許覺得很複雜,至少在我沒使用訊息佇列之前,聽別人提到訊息佇列,都感覺很複雜,很高深。 好了,言歸正傳,本篇部落格我們就講解下什麼是訊息佇列,Rabbi

C# Queue與RabbitMQ的愛恨情仇文末附原始碼:Q與MQ訊息佇列簡單應用

首先我們簡單瞭解一下什麼堆、棧、佇列。 堆是在程式執行時,而不是在程式編譯時,申請某個大小的記憶體空間。即動態分配記憶體,對其訪問和對一般記憶體的訪問沒有區別。 棧就是一個容器,後放進去的先拿出來,它下面本來有的東西要等它出來之後才能出來。(先進後出or後進先出) 佇列只能在隊頭做刪除操作,在隊尾做插入操作.

FreeSWITCH第三方庫音頻簡單介紹

優勢 帶寬 blog 網絡 ndt 目標 領域 合成 通道 FreeSWITCH使用了大量的第三方庫,本文檔主要介紹音頻相關庫的信息: 視頻相關庫的信息介紹參考:http://www.cnblogs.com/yoyotl/p/5488890.html 其他相關庫的信

OkHttp3的簡單使用

獲得 enqueue css 界面 字節 cat read 註意事項 字符串 一、導入 1)gradle方式: compile ‘com.squareup.okhttp3:okhttp:3.8.0‘(okhttp 最新版) compile ‘com.squareup.ok

fullpage.js簡單教程

style 準備工作 iba 耐心 兼容性 css3 動畫 lin per orm 最近準備做一個全屏滾動的網頁,在網上搜了一堆教程,結果大多都是一些很籠統的使用方法,對我這種耐心不超過3秒的笨蛋來說,很晦澀很籠統,所以打算邊研究邊自己寫個教程,有什麽不懂的,我再回來翻看筆

vue-router單頁應用簡單示例

數據 prop tps div -1 可重用性 example 定位 .com 我們先來理一下思路。 圖1:main.js 引入vue,App.vue,router/index.js文件 聲明要渲染的Id為app,將App.vue中的模版渲染到入口界面(就

android application類簡單介紹

cati theme text color raw sdn water bsp public 每次應用程序執行時。應用程序的application類保持實例化的狀態。通過擴展applicaiton類,能夠完畢下面3項工作: 1.對android執行時廣播的應用程序

RabbitMQ學習系列: 介紹

ref 原理 二維碼 host 屬性 訂閱 什麽 設計 發的 1. 介紹   RabbitMQ是一個由erlang開發的基於AMQP(Advanced Message Queue )協議的開源實現。用於在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面都非

NFS和SAMBA的簡單應用

NFS和SAMBA的簡單應用NFS和SAMBA的簡單應用(一) (1)使用samba和NFS分別共享/data目錄; (2)讓samba客戶端和NFS客戶端分別掛載samba服務器上共享的/data/至本地的/mydata目錄;本地的mysqld或mariadb服務的數據目錄設置為/myda

Linux shell 示例

echo -e linu 定義變量 cheng lee export let linux amd 一、環境系統:Centos6.6 x64shell:bash、sh [centos@Shell ~]$ hostname Shell [centos@Shell ~]$ ls

JDK中JCA的簡單使用---MD5加密

其實MD5加密就是用到了MessageDigest類的一種加密演算法 MessageDigest類 MessageDigest類是一個引擎類,提供加密的安全訊息功能,如SHA-256,SHA-512,MD5。加密安全訊息摘要採用任意大小的輸入(位元組陣列),並生成固定大小的輸出。 應

JMeter壓測介面簡單使用

一:JMeter壓測介面,測試介面的併發訪問是非常方便的.(Windows下測試一下)     1. JMeter官網:http://jmeter.apache.org/     2. JMeter的版本問題:使用Java開發的,安裝好JMeter

Spring Boot簡單入門

上個月第一次接觸了Spring Boot,當時摸索了一下便上手寫程式碼了,雖然沒什麼問題,但是沒什麼比自己從頭搭建一個更能瞭解其原理的了,於是今天自己根據網上的教程親手搭了一遍,踩了一些不該踩的坑,浪費了很多時間,特此記錄,寫上一個簡單的登入例項,方便後來的初學者。(登入例項在下篇詳細展示) 先

vue簡單路由

在專案中,將vue的單頁面應用程式改為了多頁面應用程式,因此在某些場景下,需要頻繁的切換兩個頁面,因此考慮使用路由,這樣會減少伺服器請求。 使用vue-cli(vue腳手架)快速搭建一個專案的模板(webpack-simple),執行起來後,將原來index.html頁面掛載點中的內容刪除