WebSphere MQ7.0 For redhat5安裝筆記分享
WebSphere MQ簡介
Websphere MQ是IBM的商業消息中間件(Commercial Messaging Middleware)。Websphere MQ提供一個具有工業標準、安全、可靠的消息傳輸系統。它的功能是控制和管理一個集成的商業應用,使得組成這個商業應用的多個分支程序(模塊)之間通過傳遞消息完成整個工作流程。Websphere MQ基本由一個消息傳輸系統和一個應用程序介面組成,其資源是消息和隊列(Messaging and Queuing)。
消息:消息就是一個信息單元,這個信息單元可以是一個請求(Request message),也可以是一個應答(Reply message),或者是一個報告(Report message)或一份報文(Datagram messge)。一個消息包含兩個因素——消息描述(用於定義諸如消息傳輸目標等)和數據消息(如應用程序數據或資料庫查詢等)。程序之間的通信通過傳遞消息而非直接調用程序。
隊列:一個安全的存儲消息的地方,消息的存儲一般是順序的,隊列是消息分階段地傳送和接收。因為消息存放在隊列中,所以應用程序可以相互獨立的運行,以不同的速度,在不同的時間,在不同的地點。
消息傳輸系統:用於確保隊列之間的消息提供,包括網路中不同系統上的遠程隊列之間的消息提供。並保證網路故障或關閉後的恢復。
應用程序介面:應用程序和消息系統之間通過Websphere MQ API實現的介面Websphere MQ API在所有Websphere MQ平台上是一致的。API只有14個調用,2個關鍵動詞:發送(PUT)和接收(GET)。
IBM Websphere MQ 保證了消息可靠性傳輸及只傳遞一次(once and only once)的特點
安裝環境
WebSphere MQ 不支持含有空格的主機名,如果將MQ 安裝在主機名包含空格的主機上,MQ將不能創建隊列管理器(queue managers)
硬體要求
Websphere MQ for Linux,Version 7.0(x86 platform) 支持任何X86平台架構的主機
最低要求
512MB RAM
1GHZ CPU
1.5G的硬碟空間
1024*768的顯示器
支持的操作系統
目前支持Red Hat Enterprise Linux AS V3.0 V4.0,V5.0
SuSE Linux Enterprise Server (SLES)V8 SP3 ,V9,V10,V11
注意:目前SuSE8不支持MQ Explorer 圖形介面
硬碟空間要求
MQ所需的空間按照安裝的組件的多少及隊列消息存儲的長短來定製
例如:
安裝Runtime、Server、Client、Sample programs、SDK等常用組件大概需要50MB空間
MQ軟體的基礎軟體IBMJava2-SDK-1.4.2-0.0及gsk7bas-7.0-x.x需要91MB的空間
安裝SSL支持
需要g++環境
Redhat環境中安裝libstdc++5 rpm包即可
需要IBM Global Security Kit v7
該軟體包已rpm包提供在MQ安裝介質包中
操作系統環境要求
c/c++編譯環境
命令行下執行
[mqm@myserver12 bin]$ gcc -v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.3/specs
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –disable-checking –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-java-awt=gtk –host=i386-redhat-linux
Thread model: posix
gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
顯示已經安裝了gcc 3.4
目前MQ支持gcc/g++ 2.9.5 、3.2、3.3、3.4
WebSphere Server安裝設置
創建安裝目錄
mkdir –p /opt/mqm
mkdir –p /var/mqm/{log,errors}
注意:mqm的安裝目錄及工作目錄必須是以上目錄,如果以上目錄的空間不夠,可以創建一個鏈接目錄,方法如下:
mkdir –p /bigger/mqm
ln –s /bigger/mqm /opt/mqm
創建用戶組
groupadd –g 555 mqm
useradd –g 555 –d /var/mqm –u 555 –s /bin/bash mqm
更改目錄許可權
chown –R mqm:mqm /opt/mqm
chown –R mqm:mqm /var/mqm
註:如果其他用戶想有MQ的管理員的許可權,比如創建、啟動隊列管理器,則將其用戶名加入到mqm組即可
設置語系環境
$export LANG=zh_CN
注意:上述設置中文,是需要安裝mq介質包中相關的語言rpm包
內核參數修改
Websphere MQ 使用System V IPC資源,特別是shared memory和semaphores
需要修改如下資源
/proc/sys/kernel/shmmax – The maximum size of a shared memory segment.
/proc/sys/kernel/shmmni – The maximum number of shared memory segments.
/proc/sys/kernel/shmall – The maximum amount of shared memory that may be allocated.
/proc/sys/kernel/sem – The maximum number and size of semaphore sets that may be allocated.
/proc/sys/kernel/msgmnb – The maximum number of bytes on a message queue.
修改方法如:
echo 268435456 >/proc/sys/kernel/shmmax
意思是將共享內存段的大小更改為256MB
以下是我機器上的設置:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.msgmnb=128
kernel.core_uses_pid = 1
kernel.shmmax=524288000
kernel.sem=250 32000 100 128
fs.file-max=65536
kernel.shmmni=4096
net.ipv4.ip_local_port_range=1024 65000
net.core.rmem_default=1048576
net.core.wmem_default=262144
net.core.rmem_max=1048576
net.core.wmem_max=262144
將以上的值直接寫入/etc/sysctl.conf 保證系統重啟後仍然生效
安裝WebSphere MQ 程序
1. root用戶登陸
上傳WMQv7.0.1-x86_linux.tar.gz介質包到/tmp
$cd /tmp
$tar –xzvf WMQv7.0.1-x86_linux.tar.gz
2. 執行mqlicense.sh接受產品許可協議
$./mqlicense.sh –accept
3. 安裝rpm包:
$rpm –ivh MQSeriesRuntime-7.0.1.i386.rpm
$rpm –ivh MQSeriesServer-7.0.1.i386.rpm
$rpm –ivh MQSeriesClient-7.0.1.i386.rpm
$rpm –ivh MQSeriesSamples-7.0.1.i386.rpm
$rpm –ivh MQSeriesMsg_Zh_CN-7.0.1.i386.rpm
驗證測試MQServer
mqm用戶登陸設置
測試環境設置
Ø 創建一個隊列管理
$crtmqm –q zymh.queue.manager
you will see messages telling you that the queue manager has been created,and that the default WebSphere MQ objects have been created
啟動隊列管理Ø
$strmqm
a message tells you when the queue manager has started
Ø 開啟MQSC
$runmqsc
將會顯示啟動了一個MQSC,接下來輸入一些語句來定義一個名叫ORANAGER.QUEUE隊列
DEFINE QLOCAL(ORANGE.QUEUE)
接著會顯示隊列創建成功
Ø 停止MQSC
end
上述一系列命令指創建了一個名為zymh.queue.manager的隊列管理器,並創建了一個名為ORANGE.QUEUE的隊列
測試
$cd /opt/mqm/samp/bin
向隊列管理器zymh.queue.manager中的隊列ORANGE.QUEUE上傳信息
$./amqsput ORANGE.QUEUE zymh.queue.manager
然後會顯示如下信息:
Sample AMQSPUT0 start
target queue is ORANGE.QUEUE
輸入一些文本,然後敲兩下回車
如:Hello World!
從隊列管理器zymh.queue.manager中的隊列ORANGE.QUEUE獲取信息
$./amqsget ORANGE.QUEUE zymh.queue.manager
如果能返回一下信息則成功
Sample AMQSGET0 start
message < Hello World! >
WebSphere MQ Client設置
環境設置
Ø 創建一個隊列管理器
[mqm@myserver12 bin]$ crtmqm -q lyx.queue.manager
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Creating or replacing default objects for lyx.queue.manager.
Default objects statistics : 40 created. 0 replaced. 0 failed.
Completing setup.
Setup completed
Ø 啟動隊列管理器
[mqm@myserver12 bin]$ strmqm lyx.queue.manager
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager ‘lyx.queue.manager’ starting.
5 log records accessed on queue manager ‘lyx.queue.manager’ during the log replay phase.
Log replay for queue manager ‘lyx.queue.manager’ complete.
Transaction manager state recovered for queue manager ‘lyx.queue.manager’.
WebSphere MQ queue manager ‘lyx.queue.manager’ started.
設置隊列及連接通道、監聽Ø
[mqm@myserver12 bin]$ runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED.
Starting MQSC for queue manager lyx.queue.manager.
定義一個名為REMOTE_QUEUE隊列
DEFINE QLOCAL(REMOTE_QUEUE)
1 : DEFINE QLOCAL(REMOTE_QUEUE)
AMQ8006: WebSphere MQ queue created.
定義一個遠程連接CHANNEL2
DEFINE CHANNEL(CHANNEL2) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER (‘MQM’)
2 : DEFINE CHANNEL(CHANNEL2) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER (‘MQM’)
AMQ8014: WebSphere MQ channel created.
定義一個監聽LISTENER2並監聽8899埠,不指定埠則用默認的1414
DEFINE LISTENER(LISTENER2) TRPTYPE (TCP) CONTROL (QMGR) PORT(8899)
3 : DEFINE LISTENER(LISTENER2) TRPTYPE (TCP) CONTROL (QMGR) PORT(8899)
AMQ8626: WebSphere MQ listener created.
啟動監聽LISTENER2
START LISTENER(LISTENER2)
4 : START LISTENER(LISTENER2)
AMQ8021: Request to start WebSphere MQ Listener accepted.
結束
END
5 : END
4 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
設置環境變數Ø
[mqm@myserver12 bin]$ export MQSERVER=’CHANNEL2/TCP/myserver12(8899)’
測試驗證
[mqm@myserver12 bin]$ ./amqsput REMOTE_QUEUE lyx.queue.manager
Sample AMQSPUT0 start
target queue is REMOTE_QUEUE
I LOVE you!!!
Sample AMQSPUT0 end
[mqm@myserver12 bin]$ ./amqsget REMOTE_QUEUE lyx.queue.manager
Sample AMQSGET0 start
message <I LOVE you!!!>
no more messages
Sample AMQSGET0 end
MQ隊列管理操作
1. 創建
$crtmqm -q lyx_queue_manager
2. 啟動
$strmq lyx_queue_manager
3. 停止
$endmqm lyx_queue_manager
4. 刪除
$dltmqm lyx_queue_manager
5. 查看
[mqm@myserver12 bin]$ dspmq
QMNAME(venus.queue.manager) STATUS(Running)
QMNAME(saturn.queue.manager) STATUS(Running)
QMNAME(zymh.queue.manager) STATUS(Running)
QMNAME(wwf.queue.manager) STATUS(Running)
QMNAME(lyx.queue.manager) STATUS(Running)
小結:在定義隊列名稱盡量用大寫,否則用小寫時amqsput/amqsget讀不到隊列名稱
以下文章點擊率最高
Loading…