mq命令
rocketmq-console的使用方法 -回复

rocketmq-console的使用方法-回复RocketMQ是由阿里巴巴开源的一款分布式消息中间件,广泛应用于大规模数据处理的场景中。
RocketMQConsole是RocketMQ的管理控制台,为用户提供了可视化的界面,方便对RocketMQ进行管理和监控。
本文将介绍RocketMQConsole的使用方法,帮助读者快速上手。
一、环境准备在开始使用RocketMQConsole之前,需要确保已经满足以下几个条件:1. 安装RocketMQ:首先,需要在机器上安装并部署RocketMQ。
具体的安装方法可以参考RocketMQ的官方文档。
2. 配置Namesrv地址:RocketMQConsole需要与RocketMQ的Namesrv进行通信,所以需要在配置文件中指定Namesrv的地址。
在RocketMQ的安装目录下的conf文件夹中,可以找到一个名为"srv.addr"的配置项,将其配置为运行RocketMQ Nameserver的机器的地址和端口。
3. 安装Java虚拟机:RocketMQConsole是基于Java开发的,所以需要确保机器上已经安装了Java虚拟机。
二、下载和部署1. 下载RocketMQConsole:可以从RocketMQ的官方GitHub仓库下载RocketMQConsole的源码,然后使用Maven编译打包成可执行的Jar包。
或者直接下载已经编译好的可执行Jar包。
2. 部署RocketMQConsole:将编译好的Jar包拷贝到任意目录下,比如/opt/rocketmq-console。
然后进入该目录,执行以下命令运行RocketMQConsole:shelljava -jar rocketmq-console-ng-x.x.x.jar其中,x.x.x代表版本号。
运行命令后,将会启动RocketMQConsole,并监听指定的端口,默认为8080。
RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置

RabbitMQ使⽤教程(⼆)RabbitMQ⽤户管理,⾓⾊管理及权限设置上⼀篇博客中,我们成功的安装好了RabbitMQ环境,并通过⼀个Java客户端⽰例了解了⽤⽣产者来发布消息,⽤消费者来消费消息。
本篇博客主要讲解下RabbitMQ如何管理⽤户(新增/删除/修改密码),如何给⽤户设置⾓⾊,如何设置⽤户权限,接下来,我们⼀⼀讲解。
1. ⽤户管理1.1 查看⽤户列表RabbitMQ安装完成后,会有⼀个默认⽤户(guest guest),那么我们如何查看⽤户列表呢?第2种⽅式是通过命令查看:cd E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.15\sbinrabbitmqctl.bat list_users注意:第1个命令中的路径修改为你机器RabblitMQ的安装路径。
1.2 新建⽤户在实际的使⽤过程中,不可能只存在这1个⽤户,有时我们需要新建1个⽤户给到开发⼈员使⽤,⽐如新建个⽤户developer 123456。
仍然有2种⽅式,第1种⽅式是通过管理后台新建:第2种⽅式是通过命令新增:rabbitmqctl.bat add_user developer 123456细⼼的⽹友也许会问为啥⽤户guest的tags是[administrator],⽽新建的⽤户developer的tags是[]呢,别着急,这⼀点会在下⾯的2.⾓⾊设置中讲解。
1.3 删除⽤户在实际使⽤过程中,删除⽤户的场景肯定也是存在的,⽐如我想把刚刚新建的⽤户developer删除掉。
仍然有2种⽅式,第1种⽅式是通过管理后台新建:第2种⽅式是通过命令删除:rabbitmqctl.bat delete_user developer因为后⾯还要使⽤⽤户developer,删除完可以再新增回来。
1.4 修改密码可能有⼈会觉得123456这种密码,太简单了,不安全,我要修改成developer123456。
rocketmq清空消息的方法

rocketmq清空消息的方法RocketMQ是一种开源的分布式消息中间件,具有高吞吐量、低延迟和高可靠性的特点。
在使用RocketMQ时,有时候需要清空消息队列中的消息。
本文将介绍几种清空消息的方法,帮助读者解决相关问题。
1. 使用RocketMQ提供的APIRocketMQ提供了一套完善的API,可以通过编程方式清空消息。
首先,需要创建一个Producer对象,并指定要清空消息的Topic。
然后,调用Producer的send方法,发送一个特殊的消息,将消息队列中的消息逐条消费完。
具体代码如下:```DefaultMQProducer producer = new DefaultMQProducer("producer_group");producer.setNamesrvAddr("namesrv_ip:9876");producer.start();try {Message msg = new Message("topic", "tag", "key", "clear".getBytes());SendResult result = producer.send(msg);System.out.println("Send result: " + result);} catch (Exception e) {e.printStackTrace();} finally {producer.shutdown();}```上述代码中,我们创建了一个Producer对象,并设置了Producer 的Group和NameServer地址。
然后,创建了一个特殊的消息,将消息内容设置为"clear",并将该消息发送到指定的Topic。
这样,RocketMQ就会逐条消费这些特殊消息,从而清空该Topic下的所有消息。
配置RocketMQACL权限

配置RocketMQACL权限==环境==系统:Linux Centos7.2RocketMQ版本:4.6.1==集群形态====修改前配置⽂件==broker-a.propertiesbrokerClusterName=rexelbrokerName=broker-abrokerId=0deleteWhen=04fileReservedTime=48brokerRole=SYNC_MASTERflushDiskType=ASYNC_FLUSHlistenPort=10921brokerIP1=192.168.29.100namesrvAddr=192.168.29.100:9876;192.168.29.101:9876autoCreateTopicEnable=falseautoCreateSubscriptionGroup=truestorePathRootDir=/home/data/rocketmq/rootdir-a-mstorePathCommitLog=/home/data/rocketmq/commitlog-a-mstorePathConsumerQueue=/home/data/rocketmq/consumequeue-a-mstorePathIndex=/home/data/rocketmq/index-a-mstoreCheckpoint=/home/data/rocketmq/checkpoint-a-mbroker-a-s.propertiesbrokerClusterName=rexelbrokerName=broker-abrokerId=1deleteWhen=04fileReservedTime=48brokerRole=SLAVEflushDiskType=ASYNC_FLUSHlistenPort=10931brokerIP1=192.168.29.101namesrvAddr=192.168.29.100:9876;192.168.29.101:9876defaultTopicQueueNums=4autoCreateTopicEnable=falseautoCreateSubscriptionGroup=truestorePathRootDir=/home/data/rocketmq/rootdir-a-sstorePathCommitLog=/home/data/rocketmq/commitlog-a-sstorePathConsumerQueue=/home/data/rocketmq/consumequeue-a-sstorePathIndex=/home/data/rocketmq/index-a-sstoreCheckpoint=/home/data/rocketmq/checkpoint-a-sbroker-b.propertiesbrokerClusterName=rexelbrokerName=broker-bbrokerId=0deleteWhen=04fileReservedTime=48brokerRole=SYNC_MASTERflushDiskType=ASYNC_FLUSHlistenPort=10921brokerIP1=192.168.29.101namesrvAddr=192.168.29.100:9876;192.168.29.101:9876defaultTopicQueueNums=4autoCreateTopicEnable=falseautoCreateSubscriptionGroup=truestorePathRootDir=/home/data/rocketmq/rootdir-b-mstorePathCommitLog=/home/data/rocketmq/commitlog-b-mstorePathConsumerQueue=/home/data/rocketmq/consumequeue-b-mstorePathIndex=/home/data/rocketmq/index-b-mstoreCheckpoint=/home/data/rocketmq/checkpoint-b-mbroker-b-s.propertiesbrokerClusterName=rexelbrokerName=broker-bbrokerId=1deleteWhen=04fileReservedTime=48brokerRole=SLAVEflushDiskType=ASYNC_FLUSHlistenPort=10931brokerIP1=192.168.29.102namesrvAddr=192.168.29.100:9876;192.168.29.101:9876defaultTopicQueueNums=4autoCreateTopicEnable=falseautoCreateSubscriptionGroup=truestorePathRootDir=/home/data/rocketmq/rootdir-b-sstorePathCommitLog=/home/data/rocketmq/commitlog-b-sstorePathConsumerQueue=/home/data/rocketmq/consumequeue-b-sstorePathIndex=/home/data/rocketmq/index-b-sstoreCheckpoint=/home/data/rocketmq/checkpoint-b-s==增加ACL权限==1. 在Broker⽂件中增加aclEnable=true的配置如下图2.重新启动集群[1][2]nohup sh /home/rocketmq-4.6.1/bin/mqnamesrv >/home/rocketmq-4.6.1/logs/mqnamesrv.log &[1]nohup sh /home/rocketmq-4.6.1/bin/mqbroker -c /home/rocketmq-4.6.1/conf/rexel/broker-a.properties >/home/rocketmq-4.6.1/logs/broker-a-m.log 2>&1 &[2]nohup sh /home/rocketmq-4.6.1/bin/mqbroker -c /home/rocketmq-4.6.1/conf/rexel/broker-a-s.properties >/home/rocketmq-4.6.1/logs/broker-a-s.log 2>&1 &[2]nohup sh /home/rocketmq-4.6.1/bin/mqbroker -c /home/rocketmq-4.6.1/conf/rexel/broker-b.properties >/home/rocketmq-4.6.1/logs/broker-b-m.log 2>&1 &[3]nohup sh /home/rocketmq-4.6.1/bin/mqbroker -c /home/rocketmq-4.6.1/conf/rexel/broker-b-s.properties >/home/rocketmq-4.6.1/logs/broker-b-s.log 2>&1 &这个时候通过集群查看命令已经会提⽰acl权限错误了,证明权限已经⽣效。
IBMMQ消息头详细介绍

IBMMQ消息头详细介绍细看 MQ 消息头(MQMD)的功能 MQMD 是每个消息都带有的消息头信息,它由若⼲字段组成,这些字段都是 MQ 设计⼈员根据总结的应⽤需求⽽设置的。
应⽤程序构建消息时应该对这些字段填⼊恰当的值,对于没有填⼊的字段,MQ会⽤默认值填充。
开发应⽤程序时,充分理解并利⽤这些字段是⼗分必要的,这⾥逐⼀为⼤家进⾏介绍,并针对每个字段指明它在实际编程中⼀般会⽤来实现什么样的功能: StrucId:消息头结构名,固定为"MQMD"四个字符。
根据这个字段,我们就能够在应⽤程序数据包中识别出MQMD的位置。
Version :MQMD 版本号。
Report:消息的报告选项,默认值为 MQRO_NONE。
发送⽅程序通过设置此字段值以指定在消息传递出现意外、消息超时、消息到达、消息递出事件时是否需要报告消息和报告消息要包含什么内容。
对于需要消息报告的程序,需要对这个字段与下⾯介绍的 ReplyToQ 和ReplyToQMgr 字段⼀起进⾏设置,以对这些消息事件作出反应。
Expiry:超时字段,单位是 0.1 秒,默认值是 MQEI_UNLIMITED,表⽰永不过期。
消息放到⽬标队列⾥以后,如果超过这个指定时间还没有被程序读⾛,MQ 系统就会丢弃这个消息。
如果这个消息设置了 Report 字段要求超时报告,系统会按照Report字段指定的⽅式返回⼀个超时报告。
应⽤中通常要进⾏必要的消息超时机制设计,⽐如实现SOA框架下为保持交易⼀致性⽽⼴泛使⽤的 Compensation 机制,就可以⽤超时处理实现。
Feedback:反馈字段,此字段与 Report 字段⼀起使⽤以指⽰报告的性质。
Encoding:消息中数值数据(binary integer、packed-decimal integers、floating-point numbers等)的编码⽅式,默认值是MQENC_NATIVE,因平台⽽异,此值不适⽤于 MQMD 结构本⾝的数字数据。
(转)IBMmq基本使用

(转)IBMmq基本使⽤⼀、下载7.5 Trial版本这是下载⽹址,下载前先必须注册IBM ID,下载完成后⼀路Next即可(注:windows上安装时,会询问是否域环境,初次学习时,为简单起见,建议选择No)安装完成后,MQ的Bin⽬录会⾃动添加到环境变量Path中,以后就可以直接⽤Dos命令⾏窗⼝操作(当然,也可以⽤图形化GUI⽅式通过IBM WebSphere MQ Explorer来管理)注:安装时,强烈建议⽤管理员Administrator⾝份安装,否则安装完成后,有可能license⽆法⽣效、runmqsc命令模式下⽆法正常执⾏命令.⼆、创建队列管理器WIN + R键,输⼊cmd,进⼊命令⾏窗⼝,键⼊:crtmqm QM_TEST创建⼀个队列管理器QM_TEST(你可以改成⾃⼰想要的名字),如果把整个MQ理解成⼀个数据库实例,QM_TEST相当于就是db instance中的schema(或user)命令⾏创建的队列管理器默认是不活动状态的,可以⽤strmqm QM_TEST来启动队列管理器三、创建队列如果说“队列管理器”是db中的schema,那么"队列"就相当于db中的Table了,⽽队列中的每条"消息",就相当于Table中的每条记录,继续在命令⾏窗⼝模式下,输⼊runmqsc QM_TEST将进⼊MQ的交互命令模式,继续输⼊define qlocal(Q1)将创建⼀个本地队列Q1(你可以改成⾃⼰需要的名字),如果此时你打开 "开始菜单->程序->IBM WebSphere MQ->WebSphere MQ Explorer (Installation1)"也能同步在图形界⾯下,看到这个队列最后键⼊end,退出MQ的交互命令模式。
四、发送消息继续在Windows命令模式下,输⼊amqsput Q1 QM_TEST这⾥系统将处于等待⽤户输⼊的状态,随便输⼊⼀些消息,然后连敲⼆次回车,完成消息发送五、接收消息amqsget Q1 QM_TEST把刚才的put换成了get,将从队列管理器QM_TEST的队列Q1中,把消息取出来六、进阶指南熟悉以上命令⾏操作后,还可以⽤图形化的操作⽅式再强化⼀遍(建议还是多⽤命令⾏模式,因为有些操作只能⽤命令⾏完成,⽐如后⾯要提到的修改队列管理器编码)WebSphere MQ Explorer中,从"帮助"菜单⾥调出帮助⽂档,⾥⾯有⼀个不错的教程,强烈推荐新⼿看⼀遍不过,"教程2:将消息发送⾄远程队列"这⾥,帮助⽂档上有⼏个细节没讲透,导致初次⽤命令⾏照着做,可能会不成功,⼏个要点如下:1、通道命名问题发送⽅与接收⽅的通道名称,必须⼀样,这样⼆边才能对应起来2、接收⽅必须要有侦听器,⽽且要处于激活状态3、发送⽅的发送通道中,连接名称格式为:"<接收⽅HostName或IP地址>(接收⽅-队列管理器-侦听器的TCP端⼝) ,不包括"<>“,⽐如⽐如:yangjm(1514)或172.12.134.14(1514)4、发送⽅的发送通道必须处于激活状态,如果通道启动失败,尝试右键->ping/复位,如果还不⾏,检查上述要点1-3是否设置有问题七、远程连接问题图形⽅式添加“远程队列管理器”时,如果远程队列也是7.x或以上版本,当前登录⽤户是管理员时,将提⽰权利不⾜,拒绝连接,原因是7.0以上,MQ提⾼了安全性,会默认拦截管理员,详情可参考IBM上的解释解决⽅式:1. 更换当前⽤户,建⼀个mqm⽤户组(MQ安装后,会默认创建该Windows⽤户组)的⽤户,然后以该⽤户⾝份登录操作2.参考IBM上的解释,如果出于学习⽬的,最简单的做法,就是在runmqsc交互模式下,键⼊ALTER QMGR CHLAUTH(DISABLED) 直接关闭通道认证(⽣产环境不推荐这么做)另外,要想本机上的队列能被远程管理,前提是该队列管理器允许远程管理,操作⽅式:队列管理器上右击->选择"远程管理...",接下来的事情⼤家都知道⼋、字符集编码问题每个队列管理器,都有⼀个CCSID的属性,对应的就是字符集编码,在windows系统中,这个编码应该是1381,如果你是⽤其它OS(⽐如linux)的配置通过脚本导⼊MQ的,可能编码就不是1381了,这会导致在windows上⽆法连接\启动队列管理器,可以通过MQ交互命令⾏修改,runmqsc QM_TEST 进⼊QM_TEST的MQ交互模式DISPLAY QMGR CCSID 查看当前的CCSID属性ALTER QMGR CCSID(1381) 修改字符集编码为1381九、如何从“试⽤版”升级成“正式版”试⽤版默认只能⽤90天,到期后,如果购买了正式版的license,可以通过命令⾏导⼊license,命令如下:setmqprd x:\license\amqpcert.lic注:amqpcert.lic中的P即代表这是Product⽣产版本,setmqprd 后⾯的路径即为license⽂件的所在路径⼗、java连接⽰例代码import com.ibm.mq.MQC;import com.ibm.mq.MQEnvironment;import com.ibm.mq.MQException;import com.ibm.mq.MQGetMessageOptions;import com.ibm.mq.MQMessage;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;/** 可以在MQ的资源管理器的某⼀个队列上放⼊测试消息、浏览消息等* 可以放⼊多条消息,按先进先出的⽅式取得*/public class MQTest {private String qManager;// QueueManager名private MQQueueManager qMgr;private MQQueue qQueue;String HOST_NAME;int PORT = 0;String Q_NAME;String CHANNEL;int CCSID;String Msg;public void init() {try {HOST_NAME = "yangjm";//Hostname或IPPORT = 1414;//要有⼀个侦听器,处于活动状态,且监听1414端⼝qManager = "QM_APPLE";Q_NAME = "Q1";//Q1是⼀个本地队列CHANNEL = "DC.SVRCONN";//QM_APPLE上要建⼀个名为DC.SVRCONN的服务器连接通道CCSID = 1381; // 表⽰是简体中⽂,// CCSID的值在AIX上⼀般设为1383,如果要⽀持GBK则设为1386,在WIN上设为1381。
IBM MQ入门
IBM WMQ1.技术介绍1.1. 总体介绍消息队列(MQ)是一种应用程序对应用程序的通信方法。
应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。
排队指的是应用程序通过队列来通信。
队列的使用除去了接收和发送应用程序同时执行的要求。
IBM WebSphere MQ 产品支持应用程序通过不同组件如处理器、子系统、操作系统以及通信协议的网络彼此进行通信。
例如,IBM WebSphere MQ 支持35 种以上的不同操作系统。
IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。
在IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到MQI。
如图所示,应用程序直接与其本地队列管理器通过使用MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。
MQI 的引人之处是它只提供13 次调用。
这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的。
1.2. 术语定义2.安装2.1. 下载最新版本:7.0.1.3有多个版本:linux_32,linux_64,linux_win2.2. 硬件环境2.3. 安装上传文件到相关目录,CZJ3YML.tar.gz输入1安装后会自动创建系统用户及用户组:mqm 程序安装目录:/opt/mqm数据相关目录:/var/mqmJava相关jar包:/opt/mqm/java/lib后续操作用mqm用户操作2.4. 卸载1.用root帐号登录系统2.停止所有队列管理器//查看正在运行的队列管理器dspmq//停止所有跟队列管理器相关的监听程序,注意:QueueManagerName是队列队列管理器名称,具体名称用命令dspmq查询endmqlsr -m QueueManagerName//停止所有正在运行的队列管理器endmqm QueueManagerName3. //确认所有跟MQ有关的进程都已经停止ps -ef | grep mq4.//查看安装了那些相关的包rpm -q -a | grep MQSeries//一次性删除所有安装的包,以下命令只是一个示例,命令后面的包名称是命令“rpm -q -a | grep MQSeries” //查询所得的所有包名称,包名之间用空格分隔,rpm -ev MQSeriesRuntime-6.0.0-0 MQSeriesServer-6.0.0-0 MQSeriesServer-6.0.0-05.删除用户userdel mqm6.删除文件rm -rf /opt/mqm/rm -rf /var/mqm/7.重启主机2.5. 重新启动MQ3、启动服务启动命令服务器:非必须启动侦听器:验证队列管理器和侦听器在两台计算机上运行,然后启动通道:3.配置配置过程包括以下几个步骤:1.创建队列管理器。
RabbitMQ更改帐号密码,添加帐号,管理密码
RabbitMQ更改帐号密码,添加帐号,管理密码更改RabbitMQ登录帐号的密码。
#进⼊RabbitMQ安装⽬录cd D:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9\sbinD:\rabbitmqctl change_password guest abc123服务启动与停⽌#安装,启动,停⽌rabbitmq-service.bat install 或 rabbitmq-service installrabbitmq-service.bat stop 或 rabbitmq-service stoprabbitmq-service.bat start 或 rabbitmq-server start#启⽤rabbitmq-server enable#禁⽤rabbitmq-server disable管理命令注意命令前⾯需要加⼀个rabbitmqctl 空格# 添加⽤户;add_user <username> <password># 删除⼀个⽤户;delete_user <username># 改变⽤户密码(也是改变web管理登陆密码);change_password <username> <newpassword># 清除⽤户的密码,该⽤户将不能使⽤密码登陆,但是可以通过SASL登陆如果配置了SASL认证;clear_password <username># 设置⽤户tags;set_user_tags <username> <tag> ...# 列出⽤户;list_users# 创建⼀个vhosts;add_vhost <vhostpath># 删除⼀个vhosts;delete_vhost <vhostpath># 列出vhosts;list_vhosts [<vhostinfoitem> ...]# 针对⼀个vhosts给⽤户赋予相关权限;set_permissions [-p <vhostpath>] <user> <conf> <write> <read># 清除⼀个⽤户对vhosts的权限;clear_permissions [-p <vhostpath>] <username># 列出哪些⽤户可以访问该vhosts;list_permissions [-p <vhostpath>]# 列出该⽤户的访问权限;list_user_permissions <username>set_parameter [-p <vhostpath>] <component_name> <name> <value>clear_parameter [-p <vhostpath>] <component_name> <key>list_parameters [-p <vhostpath>]。
rocketmq-replicator用法
RocketMQ Replicator 是阿里云开源的用于在不同 RocketMQ 集群之间进行数据复制的工具。
它能够实现 RocketMQ 集群之间的消息复制和同步。
以下是 RocketMQ Replicator 的一般用法:1. 下载和部署首先,你需要下载 RocketMQ Replicator 的二进制文件,并解压到你的服务器上。
可以从官方 GitHub 仓库获取最新版本。
2. 配置文件在解压后的 RocketMQ Replicator 目录中,有一个conf目录,里面包含了配置文件。
你需要修改配置文件以适应你的复制需求。
•replicator.properties:主要配置复制的源和目标 RocketMQ 集群信息、复制策略等。
•logback_replicator.xml:日志配置文件。
3. 修改配置文件打开conf/replicator.properties文件,根据你的需求修改以下关键配置项:请替换YOUR_SOURCE_CLUSTER_ID、YOUR_SOURCE_NAMESRV_ADDR、YOUR_DEST_CLUSTER_ID、YOUR_DEST_NAMESRV_ADDR为你实际的RocketMQ 集群配置。
4. 启动 RocketMQ Replicator在解压后的 RocketMQ Replicator 目录中,执行以下命令启动 Replicator:5. 监控和管理RocketMQ Replicator 提供了一个简单的 Web 界面,用于监控和管理。
你可以通过修改conf/application.properties中的配置来更改端口等信息。
6. 其他命令RocketMQ Replicator 还提供了其他一些命令,例如停止 Replicator、查看状态等:这是一个简单的 RocketMQ Replicator 的使用示例。
具体的配置和使用细节可以参考 RocketMQ Replicator 的文档或代码库。
linux下activemq安装与配置
linux下activemq安装与配置什么是消息中间件(MQ)?1.1 为什么会需要消息队列(MQ)? 主要原因是由于在⾼并发环境下,由于来不及同步处理,请求往往会发⽣堵塞,⽐如说,⼤量的insert,update之类的请求同时到达MySQL,直接导致⽆数的⾏锁表锁,甚⾄最后请求会堆积过多,从⽽触发too many connections错误。
通过使⽤消息队列,我们可以异步处理请求,从⽽缓解系统的压⼒。
2.2 什么是消息中间件 消息中间件利⽤⾼效可靠的消息传递机制进⾏平台⽆关的数据交流,并基于数据通信来进⾏分布式系统的集成。
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
对于消息中间件,常见的⾓⾊⼤致也就有Producer(⽣产者)、Consumer(消费者) 常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流⾏的,能⼒强劲的开源消息总线。
ActiveMQ 是⼀个完全⽀持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
我们在本次课程中介绍 ActiveMQ的使⽤。
(2)RabbitMQ AMQP协议的领导实现,⽀持多种场景。
淘宝的MySQL集群内部有使⽤它进⾏通讯,OpenStack开源云平台的通信组件,最先在⾦融⾏业得到运⽤。
(3)ZeroMQ 史上最快的消息队列系统 (4)Kafka Apache下的⼀个⼦项⽬。
特点:⾼吞吐,在⼀台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。
适合处理海量数据。
是Apache的⼀个开源项⽬,它是⼀个能⼒强劲的开源消息总线,也是⼀个中间件产品。
它是JMS的⼀个实现。
⾸先了解⼀下JMSJMS(Java Messaging Service)是Java平台上有关⾯向消息中间件的技术规范,它便于消息系统中的Java应⽤程序进⾏消息交换,并且通过提供标准的产⽣、发送、接收消息的接⼝简化企业应⽤的开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MQ服务器端(windows)和客户端(aix)通信过程 (1)创建名为venus.queue.manager的默认队列管理器。 在DOS窗口命令提示符下,输入以下命令: crtmqm -q venus.queue.manager (2)启动刚才创建的队列管理器。 在DOS窗口命令提示符下,输入以下命令: strmqm venus.queue.manager (3)启动MQSC命令。 在DOS窗口命令提示符下,输入以下命令: runmqsc venus.queue.manager (4)新建名为orange.queue的本地队列。 输入以下命令: define qlocal (orange.queue) 注意:MQSC中任何小写字母将自动转换成大写,除非用单引号将它们括起来。这意味着如果使用名称Orange.Queue创建了队列,则记住在MQSC以外其他命令中都必须使用Orange.Queue。 (5)停止MQSC。 输入以下命令: end 现在,我们已经定义了以下对象: (1)名为venus.queue.manager的默认队列管理器。 (2)名为ORANGE.QUEUE的队列。 测试对象:要测试队列管理器和队列,请使用样本程序amqsput(将消息放入队列)和amqsget(从队列获取消息),步骤如下:
(1)启动DOS窗口,进入到C:\Program Files\IBM\WebSphere MQ\bin目录下。 (2)将消息放入队列。 输入以下命令: amqsput ORANGE.QUEUE 显示以下消息: Sample amqsput0 start Target queue is ORANGE.QUEUE (3)输入一些字符数据,然后双击"Enter"键,则显示以下消息: Sample amqsput0 end 现在消息已经被放在队列中了。 (4)要从队列中获取消息,输入以下命令: amqsget ORANGE.QUEUE 在屏幕上将显示您刚才输入的字符数据消息。暂停后,例子程序结束。 如果以上步骤都能完成,则完成了本地安装的验证。 注意:如果在任何阶段中断整个安装过程,则应该从头开始重新运行安装。 2 WebSphere MQ客户端的安装和配置 如果我们开发的基于MQ的应用与MQ服务器不在同一台机器上,那么就必须在MQ应用端安装MQ客户端。下面我们以在Suse Linux 10下安装WebSphere MQ v6.0 Client为例介绍MQ客户端在Linux下的安装和配置步骤。
(1)解压缩MQ客户端安装包:C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz,命令如下:
tar -xvfz C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz (2)创建WebSphere MQ 必需的文件系统,命令如下: mkdir /opt/mqm # for product code mkdir /var/mqm # for working data 创建完后效果如下: 图3 创建WebSphere MQ 必需的文件系统
(3)创造MQ用户和用户组,命令如下: groupadd mqm useradd -d /var/mqm -g mqm -G mqm mqm passwd mqm # change password to "password" 如下图: 图4 创造MQ用户和用户组
(4)为mqm用户组添加root组 cd /etc vi group 修改 mqm:!:1000:mqm ? mqm:!:1000:mqm,root 如下图: 图5 为mqm用户组添加root组
(5)调整系统参数(视需要而定) 修改最大共享内存,命令如下: cat /proc/sys/kernel/shmmax echo 268435456 >/proc/sys/kernel/shmmax 修改最大文件句柄,命令如下: cat /proc/sys/fs/file-max echo 32768 >/proc/sys/fs/file-max 如下图所示: 图6 调整系统参数
(6)转到WebSphere MQ解压后的目录中,获得WebSphere MQ授权,命令如下: ./mqlicense.sh -text_only 阅读全文后,选择1接受授权。 如图所示: 图7 获得WebSphere MQ授权
图8 获得WebSphere MQ授权
(7)安装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 (8)安装校验 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 3 WebSphere MQ的服务端和客户端的互联 本节的WebSphere MQ的服务端和客户端不在同一台机器上。 本节以上述1,2两个步骤安装好的MQ服务端和MQ客户端为例,介绍如何配置MQ的服务端和客户端使两者能够互联。
(1)服务端配置 1)点"开始"->"所有程序"->"IBM WebSphere MQ"->"WebSphere MQ 资源管理器",进入WebSphere MQ 资源管理器界面。如下图所示:
图9 服务端配置 2)创建名为"QM_JACK"的队列管理器 <1>选中"队列管理器"->"新建"->"队列管理器",如下图所示: 图10 创建名为"QM_JACK"的队列管理器
<2>在队列管理中输入"QM_JACK",其他选项默认不变,点"下一步": 图11 在队列管理中输入"QM_JACK"
<3>设置队列日志(本步骤采用系统默认设置),点"下一步": 图12 设置队列日志
<4>启动队列管理器,创建服务器连接通道,允许在TCP/IP上进行队列管理器的远程管理,点击"下一步":
图13 创建服务器连接通道
<5>设置队列管理器QM_JACK的侦听端口:8927(用户可以根据需要自行更改端口号),点击"完成"。 图14 设置队列管理器QM_JACK的侦听端口
<6>系统进入等待界面: 图15 系统等待界面
<7>队列管理器QM_JACK创建成功 图16 系统队列管理器QM_JACK创建成功
3)在QM_JACK下创建名为"QUEUE_RECV"和"QUEUE_REPLY"的本地队列(客户可以根据自己的需求随意更改本地队列的名字和数量,这里创建这两个本地队列只是为之后的MQ_Tuxedo项目作准备):
图17 定义本地队列
图18 定义本地队列
设置队列名后其他属性全为系统默认值,点击"确定"。 4)在QM_JACK下创建名为"CNN_JACK"的服务器通道。 图19 创建服务器连接通道
图20 创建服务器连接通道
通道名称设为CNN_JACK,其他选项保留为系统默认设置,点击"确定"。 5)在MQ服务器端的计算机用户中添加MQ客户端所在计算机的系统用户。比如我的MQ客户端被Suse Linux下的root用户使用,那么,我们就需要在MQ的服务端(也就是Windows xp系统中添加名为"root"的用户)所在的计算机系统中添加名为"root"的用户。具体步骤如下:
<1>点击"开始"->"控制面板"->"计算机管理"->"系统工具"->"本地用户和组"->"用户",点右键,选"新用户",如下图所示:
图21 创建系统用户
<2>创建新用户:root(注意:这里的用户名"root"是MQ客户端所在系统的用户名,用户要根据具体情况进行修改) 图22 创建系统用户
随意设置一个有效密码,选中密码永不过期,点击"创建"。 <3>将新用户加入mqm组(注意:这里的mqm组是我们安装完MQ Server后系统自动创建的)。具体操作如下:
图23 设置系统用户所在组
点击"属性": 图24 设置系统用户所在组
点击"添加": 图25 设置系统用户所在组
输入对象名称:mqm,点击"确定":