MQ和Linux平台下的编译指南 (mq linux 编译)

在现代软件开发中,消息队列(MQ)程序经常作为我们的系统之间进行通信的方式。而Linux作为一个流行的开源操作系统,也被广泛应用于企业中。本篇文章将会详细介绍,以帮助开发者更加深入地理解和使用MQ和Linux操作系统。

一、MQ的定义和原理

MQ,全称为Message Queues,中文翻译为消息队列,是指在不同的进程之间传递消息的一种方式。MQ常常用作一个分布式系统中异构机器之间的通信方式。简单来说,MQ就是将消息存储在一个队列中,异步地向队列中发送和接受消息。

MQ的原理可以通过下图来理解:

1. 发送者A发送消息到队列中

2. 接收者B从队列中读取消息

3. 接收者B处理消息,返回给发送者A

通过上述流程,发送者A可以异步地往队列中发送消息,而不用等待接收者B完成处理。同时,MQ也能保证所有的消息都会被处理,避免了消息丢失的情况。

二、Linux的定义和特点

Linux是一个开源的操作系统核心,它的内核是由Linus Torvalds和其他参与者开发的。Linux内核和GNU工具包组成了一个完整的操作系统,具有高度的可定制性和灵活性。Linux支持多种硬件架构,并且非常安全和稳定。

Linux的特点主要有以下几个方面:

1. 开源的

2. 多用户、多任务

3. 高效的内存管理

4. 高度可定制

5. 网络和安全功能强大

三、在Linux平台上编译MQ程序的步骤

在Linux平台上编译MQ程序需要遵循以下步骤:

1. 安装编译环境

为了编译MQ程序,你需要安装一些必要的编译工具,例如gcc、g++、make、automake等。你可以通过命令行输入以下命令来安装这些工具:

“`bash

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential

“`

这些工具将帮助你编译和构建MQ程序。

2. 下载MQ源代码

你可以从MQ的官方网站上下载MQ源代码,也可以从GitHub等源代码托管平台上获取MQ的源代码。一旦你获得了MQ的源代码,你需要解压文件并将其保存到你的工作目录下。

3. 构建配置文件

MQ的构建过程需要使用一个配置文件来告诉编译器需要编译哪些文件以及如何编译。你需要创建一个名为Makefile或者CMakeLists.txt的文件,这取决于你使用的构建工具。在这个文件中,你需要指定需要编译的源代码,包括MQ的头文件和库文件。

4. 执行构建命令

一旦你创建了配置文件,你需要在Linux中运行构建命令来编译MQ程序。你可以在命令行中输入以下命令进行编译:

“`bash

make

“`

该命令将根据你的配置文件来编译MQ程序,并生产可执行文件。

5. 运行MQ测试程序

你需要测试MQ程序是否正确编译。你可以在命令行中输入以下命令来运行MQ测试程序:

“`bash

./test_mq

“`

如果测试程序正常执行,那么MQ程序就已经成功编译了。

四、在MQ平台下编译Linux程序的步骤

在MQ平台下编译Linux程序需要遵循以下步骤:

1. 安装MQ

你需要下载并安装MQ的服务器程序,例如ActiveMQ、RabbitMQ、Kafka等。你可以在MQ的官方网站上下载相应的程序。安装并配置MQ服务器需要一定的技能,如果你不确定如何操作,可以参考官方文档进行配置。

2. 配置MQ

一旦你安装好MQ服务器,你需要创建一个MQ队列和一个消费者客户端应用程序。你需要在MQ的控制面板中设置队列和消费者,以便你的客户端程序能够与MQ服务器进行通信。

3. 下载Linux程序源代码

你需要从Linux程序的源代码仓库中下载源代码,并将其保存到你的工作目录中。

4. 构建程序

你需要根据Linux程序的代码构建程序。你可以使用make命令来构建程序,就像在Linux上编译MQ程序时所做的那样。

5. 编写MQ客户端程序

你需要编写一个MQ客户端程序来向MQ服务器发送消息并接收响应。你可以使用MQ的API来编写客户端程序,并将其与你的Linux程序集成起来。

6. 测试应用程序

一旦你完成了MQ客户端程序的编写,你就可以测试程序是否在MQ平台下正常运行。你可以使用消息队列来发送和接收消息,以测试程序是否正确。

五、结论

在本篇文章中,我们详细介绍了。通过了解MQ的原理和Linux的特点,开发者可以更好地理解和使用MQ和Linux操作系统。希望这篇文章能够帮助到正在进行MQ和Linux开发的工程师们。

相关问题拓展阅读:

linux下安装MQ mqlisence.sh-accept这个命令执行不了怎么办?

如果MQ的安装包是ISO,所以需要将ISO文件mount到Linux的一个目录下面,具体操作如下:

假如选定的mount目录为根目录下mnt/下面,或者下面新建一个目录可以mkdir一个目录。在此是直接放备森在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

这个时候,ISO文件中的rpm文件都出现在了/mnt下面。

备注:使用mount需要root权限。

如果你的安装包是.tar.gz文件,那就可以省略以上一个步骤:直接解压

tar -zxvf MQ_6.0_Linux_x86-64.tar.gz

接下来步骤如下:

1:创建WebSphere MQ 必需的文件系统,命令如下:

mkdir /opt/mqm # for product code

mkdir /var/mqm # for working data

MQ安装时候默认的目录就是这两个,意思可以没必要建,但是为了保险还是自搏亩己手工建立一下。

2:创造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要依据各个系统的建立用户设定而为。此处是1007

4:调整系统参数(视需要而定)

修改更大共享内存,命令如下:

cat /proc/sys/kernel/shmmax

echo>/proc/sys/kernel/shmmax

修改更大文件句柄,命令如下:

cat /proc/sys/fs/file-max

echo>/proc/sys/fs/file-max

如果自己系统比这个大,没必要改。

5:转到WebSphere MQ解压后的目录中,获得WebSphere MQ授权,命令如下:

./mqlicense.sh -text_only

阅读全文后,选择1接受授权。

6:安装WebSphere MQ客户端和服务端,命令如下:

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(如果只装客户端,这个没必要安装)

7:安装基滚森校验

rpm -qa | grep MQSeries

结果如下则表明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(只装客户端,是没有这一项的)

到这里MQ就已经安装完成了。

验证安装

1、mqm用户登录

创建队列venus.queue.manager

crtmqm -q venus.queue.manager

启动队列管理器

strmqm

启用MQSC命令

runmqsc

进入环境后,定义名为ORANGE.QUEUE的本地队列

define qlocal (orange.queue)

end (停止MQSC)

转到/opt/mqm/samp/bin目录下,使用amqsput样本程序来将消息放入队列,以且使用amqsget样本程序来从队列取回消息

dspmq 命令可显示MQM队列状态

./amqsput ORANGE.QUEUE

(注意,队列名称为大写 否则会找不到队列,报错MQOPEN ended with reason code 2023)

输入一行文字,然后以空行结束,退出

./amqsget ORANGE.QUEUE

可显示刚才放入队列的消息,成功提示即证明完成。

MQ的基本操作

创建队列管理器

crtmqm –q QMgrName

-q是指创建缺省的队列管理器

删除队列管理器

dltmqm QmgrName

启动队列管理器

strmqm QmgrName

如果是启动默认的队列管理器,可以不带其名字

停止队列管理器

endmqm QmgrName 受控停止

endmqm –i QmgrName 立即停止

endmqm –p QmgrName 强制停止

显示队列管理器

dspmq –m QmgrName

运行MQ命令

runmqsc QmgrName

如果是默认队列管理器,可以不带其名字

往队列中放消息

amqsput QName QmgrName

如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

从队列中取出消息

amqsget QName QmgrName

如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

启动通道

runmqchl –c ChlName –m QmgrName

服务器通道不用启动

启动侦听

runmqlsr –t TYPE –p PORT –m QMgrName

停止侦听

endmqlsr -m QmgrName

下面是在MQ环境中可以执行的MQ命令(即在runmqsc环境下可以敲的命令)

定义持久信队列

DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE

设定队列管理器的持久信队列

ALTER QMGR DEADQ(QNAME)

定义本地队列

DEFINE QL(QNAME) REPLACE

定义别名队列

DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)

远程队列定义

DEFINE QREMOTE(QRNAME) +

RNAME(AAA) RQMNAME(QMGRNAME) +

XMITQ(QTNAME)

定义模型队列

DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)

定义本地传输队列

DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +

INITQ(SYSTEM.CHANNEL.INITQ)+

PROCESS(PROCESSNAME) REPLACE

创建进程定义

DEFINE PROCESS(PRONAME) +

DESCR(‘STRING’)+

APPLTYPE(WINDOWSNT)+

APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)

其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等

创建发送方通道

DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)+

CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE

其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

创建接收方通道

DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE

创建服务器连接通道

DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE

显示队列的所有属性

DISPLAY QUEUE(QNAME)

显示队列的所选属性

DISPLAY QUEUE(QNAME) DESCR GET PUT

DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH

显示队列管理器的所有属性

DISPLAY QMGR

显示进程定义

DISPLAY PROCESS(PRONAME)

更改属性

ALTER QMGR DESCR(‘NEW DESCRIPTION’)

ALTER QLOCAL(QNAME) PUT(DISABLED)

ALTER QALIAS(QNAME) TARGQ(TARGQNAME)

删除队列

DELETE QLOCAL(QNAME)

DELETE QREMOTE(QRNAME)

清除队列中的所有消息

CLEAR QLOCAL(QNAME)

查看CCSID

DISPLAY QMGR CCSID

修改CCSID为1381

ALTER QMGR CCSID(1381)

以下是一些高级配置的命令:

amqmcert 配置SSL证书

amqmdain 配置windows上的MQ服务

crtmqcvx转换数据

dmpmqaut 转储对象权限管理

dmpmqlog 转储日志管理

dspmq显示队列管理器

dspmqaut 显示打开对象的权限

dmpmqcap 显示处理程序容量和处理程序数

dspmqcsv 显示命令服务器状态

dspmqfls 显示文件名

dspmqtrc 跟踪MQ输出(HP-UNIX LINUX Solaris)

dspmqrtn 显示事务的详细信息

endmqcsv 停止队列管理器上的命令服务器

strmqcsv启动队列管理器上的命令服务器

endmqtrc 停止跟踪

rcdmqimg 向日志写对象的映像

rcmqobj根据日志中的映像重新创建一个对象

rsvmqtrn提交或逆序恢复事务

需要增加执行权限,具体的核胡操作大致是:

增加权册仔限:

chmod +x mqlisence.sh

执行:

./改姿拦mqlisence.sh -accept

我面给脚本复制定名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

其实service脚本我linuxservice名改abc等其名字服务 abc 服务 start|stop|status 嘿嘿…

能直接用需要加/in/service或者/etc/profile加变孝乱量

export PATH=/in/:/usr/in/ 记让变量效啊 source /etc/profile

关于mq linux 编译的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » MQ和Linux平台下的编译指南 (mq linux 编译)