1. 程式人生 > >1. JMS和MQ之間的聯絡和區別以及RabbitMQ的搭建

1. JMS和MQ之間的聯絡和區別以及RabbitMQ的搭建

一、JMS

定義:JMS即Java訊息服務(JavaMessage Service)應用程式介面是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。Java訊息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支援。

簡介:JMS是一種與廠商無關的 API,用來訪問訊息收發服務(訊息中介軟體)。它類似於JDBC(Java DatabaseConnectivity):這裡,JDBC 是可以用來訪問許多不同關係資料庫的API,而JMS同樣提供與廠商無關的訪問方式來訪問訊息收發服務,許多廠商目前都支援JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,這只是幾個例子。 JMS 使您能夠通過訊息收發服務從一個 JMS 客戶機向另一個JMS客戶機發送訊息。訊息是 JMS 中的一種型別物件,由兩部分組成:報頭和訊息主體。報頭由路由資訊以及有關該訊息的元資料組成。訊息主體則攜帶著應用程式的資料或有效負載。根據有效負載的型別來劃分,可以將訊息分為幾種型別,它們分別攜帶:簡單文字(TextMessage)、可序列化的物件 (ObjectMessage)、屬性集合 (MapMessage)、位元組流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的訊息 (Message)。

二、MQ

定義:MQ全稱為訊息佇列(Message Queue), MQ是一種應用程式與應用程式之間的通訊方法。應用程式通過訊息佇列來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式通過在訊息佇列中收發資料進行通訊,而不是通過直接呼叫彼此來通訊。佇列的使用除去了接收和傳送應用程式同時執行的要求。其中較為成熟的MQ產品有IBM的WEBSPHERE MQ。

MQ特點:MQ的消費-生產者模型的一個典型的代表,一端往訊息佇列中不斷的寫入訊息,而另一端則可以讀取或者訂閱佇列中的訊息。

使用場景:在專案中,將一些無需即時返回且耗時的操作提取出來,進行了非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。

三、二者之間的關係

JMS是一個用於提供訊息服務的技術規範,它制定了在整個訊息服務提供過程中的所有資料結構和互動流程。而MQ則是訊息佇列服務,是面向訊息中介軟體(MOM)的最終實現,是真正的訊息服務提供者。MQ的實現可以基於JMS,也可以基於其他規範或標準,其中ActiveMQ就是基於JMS規範實現的訊息佇列。

安裝RabbitMQ

環境使用 centos7

  1. 首先下載erlang solution,因為RabbitMQ是基於erlang的
wget https://packages.erlang-solutions.com/erlang-solutions-1.0
-1.noarch.rpm
  1. 安裝
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install epel-release
yum install erlang
  1. 下載Rabbit
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-
3.6.6-1.el7.noarch.rpm
  1. 安裝Rabbit
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
  1. 開啟允許遠端訪問(非必須)

一般埠號為5672

vi /etc/rabbitmq/rabbitmq.config
// 編輯文字
[{rabbit, [{tcp_listeners, [5672]}, {loopback_users,["賬戶名"]}]}].
  1. 開啟 web 端管理訪問(非必須,如果要開啟,需要先開啟允許遠端訪問)
rabbitmq-plugins enable rabbitmq_management
  1. 安裝訊息延遲外掛
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/plugins

wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez

rabbitmq-plugins enablerabbitmq_delayed_message_exchange
  1. 放行埠
firewall-cmd --add-port=15672/tcp --permanent

firewall-cmd --add-port=5672/tcp --permanent
  1. 啟動
service rabbitmq-server start
###檢視狀態
service rabbitmq-server status
###重啟
service rabbitmq-server restart
#停止
service rabbitmq-server stop

新增使用者

賬號級別:
1. 超級管理員 administrator,可以登入控制檯,檢視所有資訊,可以對使用者和策略進行操作
2. 監控者 monitoring, 可以登入控制檯,可以檢視節點相關的資訊,比如程序數,記憶體磁碟使用情況
3. 策略制定者 policymaker 可以登入控制檯,制定策略,但無法檢視節點資訊
4. 普通管理員 management 僅能登入控制檯
5. 其他,無法登入控制檯,一般指的是提供者和消費者

新增賬號:

  1. 命令列新增
# rabbitmqctl add_user userName password
rabbitmqctl add_user hcf hcf

# rabbitmqctl set_user_tags userName position
rabbitmqctl set_user_tags hcf administrator
  1. web端新增

相關推薦

1. JMSMQ之間聯絡區別以及RabbitMQ搭建

一、JMS 定義:JMS即Java訊息服務(JavaMessage Service)應用程式介面是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。Java訊息服務是一個與具體平臺

說說TCP,UDPsocket,Http之間聯絡區別

整理的這些區別和聯絡都是非常重要的。 TCP協議 TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由IETF的RFC 793定義。在簡化的計算機網路OSI模型中,它完成

MakefileCmake的聯絡區別

CMake是一種跨平臺編譯工具,比make更為高階,使用起來要方便得多。CMake主要是編寫CMakeLists.txt檔案,然後用cmake命令將CMakeLists.txt檔案轉化為make所需要的makefile檔案,最後用make命令編譯原始碼生成可執行程式或共享庫(so(shared ob

CC++的聯絡區別

面向過程的思路:分析解決問題所需的步驟,用函式把這些步驟依次實現。 面向物件的思路:把構成問題的事務分解為各個物件,建立物件的目的,不是完成一個步驟,而是描述某個事務在解決整個問題步驟中的行為。 從上述描述可以看出,其實面向物件和麵向過程是兩種思考解決問題的方式,其差異主要在於思考的角度。

如何做預設樣式重置?resetting normalizing 之間有什麼區別

這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【如何做預設樣式重置?resetting 和 normalizing 之間有什麼區別?】 &

spring、springMvc、springBootspringCloud的聯絡區別

spring和springMvc: 1. spring是一個一站式的輕量級的java開發框架,核心是控制反轉(IOC)和麵向切面(AOP),針對於開發的WEB層(springMvc)、業務層(Ioc)、持久層(jdbcTemplate)等都提供了多種配置解決方案; 2. springMv

靜態方法例項方法聯絡區別

1、呼叫方式上 靜態方法依賴於類,通過類.靜態方法呼叫;例項方法依賴於類的物件,需要建立物件後,物件.例項方法使用 2、使用上 例項方法內部不能定義靜態變數,會出現編譯錯誤;例項方法可以直接呼叫靜態方法;靜態方法內部可以定義和使用例項變數,靜態方法無法直接呼叫例項方法(

HadoopSpark之間有什麼區別,現工業界都在使用何種技術?

談到大資料,相信大家對hadoop和Apache Spark這兩個名字並不陌生。然而,最近業界有一些人正在大張旗鼓的宣揚Hadoop將死,Spark將立。 談到大資料,相信大家對hadoop和Apache Spark這兩個名字並不陌生。然而,最近業界有一些人正在大張旗鼓

HTTPS HTTP的聯絡區別

HTTPS和HTTP的區別: https協議需要到ca申請證書,一般免費證書很少,需要交費。http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議http和https使用的是完全不同的連線方式用的埠也不一樣,前者是80,後者是443。http的連線很簡單,是無狀態的H

SessionCookie的聯絡區別

這裡有一篇資料:https://pan.baidu.com/s/1tjUyL7DwY2ganIfKnz_AJQ 在講session和coookie之前,要先知道會話跟蹤的概念。 在常見的Java Web開發中,我們經常會使用會話跟蹤技術,來記錄某一時段使用者的行為。

Mybatis中resultMapresultType使用聯絡區別

         MyBatis中在查詢進行select對映的時候,返回型別可以用resultType,也可以用resultMap,resultType是直接  表示返回型別的,而resultMap則是對外部ResultMap的引用,但是resultType跟resu

Linux下檢視檔案資料夾大小的dfdu命令聯絡區別

前面經常需要對Host裡的多個VM進行一些操作如take snapshot等,需要檢視容量時經常用到df -h,但是用到du  的比較少,當需要檢視具體的某個資料夾下的各個檔案 的大小時就需要用到du , 看了下面的介紹當使用 du -h --max-depth=1 wor

methodscomputedwatch的聯絡區別

一.methods和computed computed是計算屬性,methods是方法。 html: <p>Reversed message: "{{ reversedMessage() }}"</p> js: 1. var vm = new V

視訊位元速率(Bitrate), 幀率(FPS)解析度的聯絡區別

視訊位元速率,幀率和解析度到底哪一個影響電影的清晰度 位元速率:影響體積,與體積成正比:位元速率越大,體積越大;位元速率越小,體積越小。 位元速率就是資料傳輸時單位時間傳送的資料位數,一般我們用的單位是kbps即千位每秒。也就是取樣率(並不等同與取樣率,取樣率的單位

java中的String,StringBuilder,StringBuffer的聯絡區別

首先我們看這麼一個程式public static void main(String[]args){ String str1 = "hello"; String str2 = str1+"word"; System.out.println(str2); } String就

辛星淺析array_walk()array_map()的聯絡區別

    對於這兩個函式的具體使用方式,我們先來看一下吧,首先是array_walk,程式碼如下: <?php $arr = array(2,4,5,6,7); function xin(&am

二層交換機、三層交換機路由器的基本工作原理三者之間的主要區別

一、三層交換機與路由器的主要區別之所以有人搞不清三層交換機和路由器之間的區別,最根本就是三層交換機也具有“路由”功能,與傳統路由器的路由功能總體上是一致的。雖然如此,三層交換機與路由器還是存在著相當大的本質區別的,下面分別予以介紹。1. 主要功能不同 雖然三層交換機與路由器都具有路由功能,但我們不能因此而把

公鑰私鑰聯絡區別

      一直以來對公鑰和私鑰都理解得不是很透徹,感覺到模稜兩可,心裡直打鼓呢。公鑰怎麼會事?私鑰怎麼會事?工作原理是怎麼的?今天在網上找了半天,通過檢視大家對這個金鑰對的理解,總算弄清楚了,咱就把我的心得寫出來給大家對金鑰對有疑問的同志們看看。      公鑰和私鑰就是

postpreSqlmysql之間語句的區別,目前使用發現到的

1.首先是資料庫表的欄位,postpreSql對大小寫敏感,所以儘量用小寫,或者XX_XX_XX的形式寫.. 2.mysql中分頁使用limit pageNum,pageSize ,postpreSql中是limit pageSize offset page

C# 委託事件的聯絡區別

聯絡:事件是一種特殊的委託,均類似於C中的函式指標,將一個方法通過引數傳到別的方法中,通過別的方法來呼叫。 區別:體現在封裝性。事件是訂閱釋出的機制。 委託可以在類的外部直接賦值,直接呼叫。即可以使用: A a = new A();   B b = new B()