新聞中心
在現(xiàn)代軟件開發(fā)中,消息隊(duì)列(MQ)程序經(jīng)常作為我們的系統(tǒng)之間進(jìn)行通信的方式。而Linux作為一個(gè)流行的開源操作系統(tǒng),也被廣泛應(yīng)用于企業(yè)中。本篇文章將會(huì)詳細(xì)介紹,以幫助開發(fā)者更加深入地理解和使用MQ和Linux操作系統(tǒng)。

成都創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有十多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗(yàn),近1000家客戶的共同信賴。提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、網(wǎng)站定制、買鏈接、建網(wǎng)站、網(wǎng)站搭建、成都響應(yīng)式網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
一、MQ的定義和原理
MQ,全稱為Message Queues,中文翻譯為消息隊(duì)列,是指在不同的進(jìn)程之間傳遞消息的一種方式。MQ常常用作一個(gè)分布式系統(tǒng)中異構(gòu)機(jī)器之間的通信方式。簡單來說,MQ就是將消息存儲在一個(gè)隊(duì)列中,異步地向隊(duì)列中發(fā)送和接受消息。
MQ的原理可以通過下圖來理解:
1. 發(fā)送者A發(fā)送消息到隊(duì)列中
2. 接收者B從隊(duì)列中讀取消息
3. 接收者B處理消息,返回給發(fā)送者A
通過上述流程,發(fā)送者A可以異步地往隊(duì)列中發(fā)送消息,而不用等待接收者B完成處理。同時(shí),MQ也能保證所有的消息都會(huì)被處理,避免了消息丟失的情況。
二、Linux的定義和特點(diǎn)
Linux是一個(gè)開源的操作系統(tǒng)核心,它的內(nèi)核是由Linus Torvalds和其他參與者開發(fā)的。Linux內(nèi)核和GNU工具包組成了一個(gè)完整的操作系統(tǒng),具有高度的可定制性和靈活性。Linux支持多種硬件架構(gòu),并且非常安全和穩(wěn)定。
Linux的特點(diǎn)主要有以下幾個(gè)方面:
1. 開源的
2. 多用戶、多任務(wù)
3. 高效的內(nèi)存管理
4. 高度可定制
5. 網(wǎng)絡(luò)和安全功能強(qiáng)大
三、在Linux平臺上編譯MQ程序的步驟
在Linux平臺上編譯MQ程序需要遵循以下步驟:
1. 安裝編譯環(huán)境
為了編譯MQ程序,你需要安裝一些必要的編譯工具,例如gcc、g++、make、automake等。你可以通過命令行輸入以下命令來安裝這些工具:
“`bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
“`
這些工具將幫助你編譯和構(gòu)建MQ程序。
2. 下載MQ源代碼
你可以從MQ的官方網(wǎng)站上下載MQ源代碼,也可以從GitHub等源代碼托管平臺上獲取MQ的源代碼。一旦你獲得了MQ的源代碼,你需要解壓文件并將其保存到你的工作目錄下。
3. 構(gòu)建配置文件
MQ的構(gòu)建過程需要使用一個(gè)配置文件來告訴編譯器需要編譯哪些文件以及如何編譯。你需要?jiǎng)?chuàng)建一個(gè)名為Makefile或者CMakeLists.txt的文件,這取決于你使用的構(gòu)建工具。在這個(gè)文件中,你需要指定需要編譯的源代碼,包括MQ的頭文件和庫文件。
4. 執(zhí)行構(gòu)建命令
一旦你創(chuàng)建了配置文件,你需要在Linux中運(yùn)行構(gòu)建命令來編譯MQ程序。你可以在命令行中輸入以下命令進(jìn)行編譯:
“`bash
make
“`
該命令將根據(jù)你的配置文件來編譯MQ程序,并生產(chǎn)可執(zhí)行文件。
5. 運(yùn)行MQ測試程序
你需要測試MQ程序是否正確編譯。你可以在命令行中輸入以下命令來運(yùn)行MQ測試程序:
“`bash
./test_mq
“`
如果測試程序正常執(zhí)行,那么MQ程序就已經(jīng)成功編譯了。
四、在MQ平臺下編譯Linux程序的步驟
在MQ平臺下編譯Linux程序需要遵循以下步驟:
1. 安裝MQ
你需要下載并安裝MQ的服務(wù)器程序,例如ActiveMQ、RabbitMQ、Kafka等。你可以在MQ的官方網(wǎng)站上下載相應(yīng)的程序。安裝并配置MQ服務(wù)器需要一定的技能,如果你不確定如何操作,可以參考官方文檔進(jìn)行配置。
2. 配置MQ
一旦你安裝好MQ服務(wù)器,你需要?jiǎng)?chuàng)建一個(gè)MQ隊(duì)列和一個(gè)消費(fèi)者客戶端應(yīng)用程序。你需要在MQ的控制面板中設(shè)置隊(duì)列和消費(fèi)者,以便你的客戶端程序能夠與MQ服務(wù)器進(jìn)行通信。
3. 下載Linux程序源代碼
你需要從Linux程序的源代碼倉庫中下載源代碼,并將其保存到你的工作目錄中。
4. 構(gòu)建程序
你需要根據(jù)Linux程序的代碼構(gòu)建程序。你可以使用make命令來構(gòu)建程序,就像在Linux上編譯MQ程序時(shí)所做的那樣。
5. 編寫MQ客戶端程序
你需要編寫一個(gè)MQ客戶端程序來向MQ服務(wù)器發(fā)送消息并接收響應(yīng)。你可以使用MQ的API來編寫客戶端程序,并將其與你的Linux程序集成起來。
6. 測試應(yīng)用程序
一旦你完成了MQ客戶端程序的編寫,你就可以測試程序是否在MQ平臺下正常運(yùn)行。你可以使用消息隊(duì)列來發(fā)送和接收消息,以測試程序是否正確。
五、結(jié)論
在本篇文章中,我們詳細(xì)介紹了。通過了解MQ的原理和Linux的特點(diǎn),開發(fā)者可以更好地理解和使用MQ和Linux操作系統(tǒng)。希望這篇文章能夠幫助到正在進(jìn)行MQ和Linux開發(fā)的工程師們。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220linux下安裝MQ mqlisence.sh-accept這個(gè)命令執(zhí)行不了怎么辦?
如果MQ的安裝包是ISO,所以需要將ISO文件mount到Linux的一個(gè)目錄下面,具體操作如下:
假如選定的mount目錄為根目錄下mnt/下面,或者下面新建一個(gè)目錄可以mkdir一個(gè)目錄。在此是直接放備森在mnt目錄下面的:
ISO文件放在/home/afe/MQinstall/下面,名字為MQ_6.0_Linux_x86-64.iso 那么可以用命令:
mount -o loop /home/afe/MQinstall/MQ_6.0_Linux_x86-64.iso /mnt/cd1
這個(gè)時(shí)候,ISO文件中的rpm文件都出現(xiàn)在了/mnt下面。
備注:使用mount需要root權(quán)限。
如果你的安裝包是.tar.gz文件,那就可以省略以上一個(gè)步驟:直接解壓
tar -zxvf MQ_6.0_Linux_x86-64.tar.gz
接下來步驟如下:
1:創(chuàng)建WebSphere MQ 必需的文件系統(tǒng),命令如下:
mkdir /opt/mqm # for product code
mkdir /var/mqm # for working data
MQ安裝時(shí)候默認(rèn)的目錄就是這兩個(gè),意思可以沒必要建,但是為了保險(xiǎn)還是自搏畝己手工建立一下。
2:創(chuàng)造MQ用戶和用戶組,命令如下:
groupadd mqm
useradd -d /var/mqm -g mqm -G mqm mqm
passwd mqm # change password to “password”
只有把mqm密碼改了,才能使以上生效。
3:為mqm用戶組添加root組
cd /etc
vi group
修改 mqm:!:1007:mqm ? mqm:!:1007:mqm,root
這里的gid要依據(jù)各個(gè)系統(tǒng)的建立用戶設(shè)定而為。此處是1007
4:調(diào)整系統(tǒng)參數(shù)(視需要而定)
修改更大共享內(nèi)存,命令如下:
cat /proc/sys/kernel/shmmax
echo>/proc/sys/kernel/shmmax
修改更大文件句柄,命令如下:
cat /proc/sys/fs/file-max
echo>/proc/sys/fs/file-max
如果自己系統(tǒng)比這個(gè)大,沒必要改。
5:轉(zhuǎn)到WebSphere MQ解壓后的目錄中,獲得WebSphere MQ授權(quán),命令如下:
./mqlicense.sh -text_only
閱讀全文后,選擇1接受授權(quán)。
6:安裝WebSphere MQ客戶端和服務(wù)端,命令如下:
rpm -ivh MQSeriesRuntime-6.0.0-0.i386.rpm
rpm -ivh MQSeriesSDK-6.0.0-0.i386.rpm
rpm -ivh MQSeriesJava-6.0.0-0.i386.rpm
rpm -ivh MQSeriesClient-6.0.0-0.i386.rpm
rpm -ivh MQSeriesSamples-6.0.0-0.i386.rpm
rpm -ivh MQSeriesServer-6.0.0-0.i386.rpm(如果只裝客戶端,這個(gè)沒必要安裝)
7:安裝基滾森校驗(yàn)
rpm -qa | grep MQSeries
結(jié)果如下則表明MQ 客戶端的安裝已成功。
MQSeriesRuntime-6.0.0-0
MQSeriesSDK-6.0.0-0
MQSeriesJava-6.0.0-0
MQSeriesClient-6.0.0-0
MQSeriesSamples-6.0.0-0
MQSeriesServer-6.0.0-0(只裝客戶端,是沒有這一項(xiàng)的)
到這里MQ就已經(jīng)安裝完成了。
驗(yàn)證安裝
1、mqm用戶登錄
創(chuàng)建隊(duì)列venus.queue.manager
crtmqm -q venus.queue.manager
啟動(dòng)隊(duì)列管理器
strmqm
啟用MQSC命令
runmqsc
進(jìn)入環(huán)境后,定義名為ORANGE.QUEUE的本地隊(duì)列
define qlocal (orange.queue)
end (停止MQSC)
轉(zhuǎn)到/opt/mqm/samp/bin目錄下,使用amqsput樣本程序來將消息放入隊(duì)列,以且使用amqsget樣本程序來從隊(duì)列取回消息
dspmq 命令可顯示MQM隊(duì)列狀態(tài)
./amqsput ORANGE.QUEUE
(注意,隊(duì)列名稱為大寫 否則會(huì)找不到隊(duì)列,報(bào)錯(cuò)MQOPEN ended with reason code 2023)
輸入一行文字,然后以空行結(jié)束,退出
./amqsget ORANGE.QUEUE
可顯示剛才放入隊(duì)列的消息,成功提示即證明完成。
MQ的基本操作
創(chuàng)建隊(duì)列管理器
crtmqm –q QMgrName
-q是指創(chuàng)建缺省的隊(duì)列管理器
刪除隊(duì)列管理器
dltmqm QmgrName
啟動(dòng)隊(duì)列管理器
strmqm QmgrName
如果是啟動(dòng)默認(rèn)的隊(duì)列管理器,可以不帶其名字
停止隊(duì)列管理器
endmqm QmgrName 受控停止
endmqm –i QmgrName 立即停止
endmqm –p QmgrName 強(qiáng)制停止
顯示隊(duì)列管理器
dspmq –m QmgrName
運(yùn)行MQ命令
runmqsc QmgrName
如果是默認(rèn)隊(duì)列管理器,可以不帶其名字
往隊(duì)列中放消息
amqsput QName QmgrName
如果隊(duì)列是默認(rèn)隊(duì)列管理器中的隊(duì)列,可以不帶其隊(duì)列管理器的名字
從隊(duì)列中取出消息
amqsget QName QmgrName
如果隊(duì)列是默認(rèn)隊(duì)列管理器中的隊(duì)列,可以不帶其隊(duì)列管理器的名字
啟動(dòng)通道
runmqchl –c ChlName –m QmgrName
服務(wù)器通道不用啟動(dòng)
啟動(dòng)偵聽
runmqlsr –t TYPE –p PORT –m QMgrName
停止偵聽
endmqlsr -m QmgrName
下面是在MQ環(huán)境中可以執(zhí)行的MQ命令(即在runmqsc環(huán)境下可以敲的命令)
定義持久信隊(duì)列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE
設(shè)定隊(duì)列管理器的持久信隊(duì)列
ALTER QMGR DEADQ(QNAME)
定義本地隊(duì)列
DEFINE QL(QNAME) REPLACE
定義別名隊(duì)列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)
遠(yuǎn)程隊(duì)列定義
DEFINE QREMOTE(QRNAME) +
RNAME(AAA) RQMNAME(QMGRNAME) +
XMITQ(QTNAME)
定義模型隊(duì)列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)
定義本地傳輸隊(duì)列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(PROCESSNAME) REPLACE
創(chuàng)建進(jìn)程定義
DEFINE PROCESS(PRONAME) +
DESCR(‘STRING’)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等
創(chuàng)建發(fā)送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)+
CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。
創(chuàng)建接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE
創(chuàng)建服務(wù)器連接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE
顯示隊(duì)列的所有屬性
DISPLAY QUEUE(QNAME)
顯示隊(duì)列的所選屬性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH
顯示隊(duì)列管理器的所有屬性
DISPLAY QMGR
顯示進(jìn)程定義
DISPLAY PROCESS(PRONAME)
更改屬性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)
刪除隊(duì)列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)
清除隊(duì)列中的所有消息
CLEAR QLOCAL(QNAME)
查看CCSID
DISPLAY QMGR CCSID
修改CCSID為1381
ALTER QMGR CCSID(1381)
以下是一些高級配置的命令:
amqmcert 配置SSL證書
amqmdain 配置windows上的MQ服務(wù)
crtmqcvx轉(zhuǎn)換數(shù)據(jù)
dmpmqaut 轉(zhuǎn)儲對象權(quán)限管理
dmpmqlog 轉(zhuǎn)儲日志管理
dspmq顯示隊(duì)列管理器
dspmqaut 顯示打開對象的權(quán)限
dmpmqcap 顯示處理程序容量和處理程序數(shù)
dspmqcsv 顯示命令服務(wù)器狀態(tài)
dspmqfls 顯示文件名
dspmqtrc 跟蹤MQ輸出(HP-UNIX LINUX Solaris)
dspmqrtn 顯示事務(wù)的詳細(xì)信息
endmqcsv 停止隊(duì)列管理器上的命令服務(wù)器
strmqcsv啟動(dòng)隊(duì)列管理器上的命令服務(wù)器
endmqtrc 停止跟蹤
rcdmqimg 向日志寫對象的映像
rcmqobj根據(jù)日志中的映像重新創(chuàng)建一個(gè)對象
rsvmqtrn提交或逆序恢復(fù)事務(wù)
需要增加執(zhí)行權(quán)限,具體的核胡操作大致是:
增加權(quán)冊仔限:
chmod +x mqlisence.sh
執(zhí)行:
./改姿攔mqlisence.sh -accept
我面給腳本復(fù)制定名service放/in/
#!/bin/sh
. /判帶etc/init.d/functions
VERSION=”`basename $0` ver. 0.91″
USAGE=”Usage: `basename $0` | –status-all | \
>”
SERVICE=
SERVICEDIR=”/etc/init.d”
OPTIONS=
if ; then
echo “${USAGE}” >&2
exit 1
fi
cd /
while ; do
case “${1}” in
–help | -h | –h* )
echo “${USAGE}” >&2
exit 0
;;
–version | -V )
echo “${VERSION}” >&2
exit 0
;;
*)
if ; then
cd ${SERVICEDIR}
for SERVICE in * ; do
case “${SERVICE}” in
functions | halt | killall | single| linuxconf| kudzu)
;;
*)
if ! is_ignored_file “${SERVICE}” \
&& ; then
env -i LANG=”$LANG” PATH=”$PATH” TERM=”$TERM” “${SERVICEDIR}/${SERVICE}” status
fi
;;
esac
done
exit 0
elif ; then
SERVICE=”${1}”
if ; then
env -i LANG=”$LANG” PATH=”$PATH” TERM=”$TERM” “巧沖檔${SERVICEDIR}/${SERVICE}” stop
env -i LANG=”$LANG” PATH=”$PATH” TERM=”$TERM” “${SERVICEDIR}/${SERVICE}” start
exit $?
fi
elif ; then
SERVICE=”${1}”
else
OPTIONS=”${OPTIONS} ${1}”
fi
shift
;;
esac
done
if ; then
env -i LANG=”$LANG” PATH=”$PATH” TERM=”$TERM” “${SERVICEDIR}/${SERVICE}” ${OPTIONS}
else
echo $”${SERVICE}: unrecognized service” >&2
exit 1
fi
其實(shí)service腳本我linuxservice名改abc等其名字服務(wù) abc 服務(wù) start|stop|status 嘿嘿…
能直接用需要加/in/service或者/etc/profile加變孝亂量
export PATH=/in/:/usr/in/ 記讓變量效啊 source /etc/profile
關(guān)于mq linux 編譯的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
名稱欄目:MQ和Linux平臺下的編譯指南(mqlinux編譯)
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/dhhdhgp.html


咨詢
建站咨詢
