生成队列管理器后,可以用MQM管理界面做系统管理的大部分工作,只有启动通道程序必须在管理界面外单独执行,每个通道程序(即每一个活动的通道)都占用一个端口,在/etc/services文件中指定服务名与端口号的对应关系,在mqm 管理界面中定义通道时必须使用已定义的服务名。MQ for SCO Unix V1.4 与高版本的MQ 不同,没有默认端口号,与高版本的MQ 连接时要注意。下面是/etc/services 文件中关于MQ 所用的端口号定义片段:
mqmcamd 3000/tcp #MQSeries mcamd
mqoper 3001/tcp #MQSeries oper
mqmca 3002/tcp #MQSeries mca
ch1 3003/tcp #Sender Channel
ch2 3004/tcp #Receiver Channel
MQSeries 1414/tcp #MQSeries mca
其中前三项是支持SCO Unix 上的MQ运行所必须的,第四项指远端MQ使用的网络端口号。如果在一台机器上定义多个通道,要注意端口的使用规则:一个端口可以用于多个发送通道(SENDER)或多个请求通道(REQUESTER),但只能用于一个接收通道( RECEIVER )或一个服务器通道(SERVER),而且接收通道和服务器通道使用的端口号不能重复,也不能与发送通道和请求通道使用的端口号重复。
管理MQ的定义时尽量注意以下几点,可以避免不必要的混乱:
1 检查通道的定义在发送方和接收方是否一致,MQ V1 与MQ V2 及更高版本的MQ 的通道参数名和默认值不完全一样。
消息序列号复位值 ( Sequence Wrap Value) 指通道的消息序列号增加到一定值后复位为1 ,在MQ for SCO 中的默认值是999999,而在高版本的MQ 中的默认值是999999999。
通道的批处理量(Batch Size) 指通道程序在一个传输事务中传送的消息数,高版本MQ的参数名是BATCHSZ,MQ for SCO中的参数名是checkpoint count。定义通道时最好把这两个参数对应置成相同的值。
MQ 上的通道定义中MCA HOSTNAME 要设成主机名,不要设成IP 地址。远程机器的主机名和IP地址要在/etc/hosts文件中加入定义。
2 MQ for SCO 队列管理器的字符集编码(CCSID) 默认值为0 ,与其他平台通讯时注意根据对方字符集编码设置相应的CCSID 。 如AIX 上的队列管理器使用字符集819 ,SCO 上的队列管理器也应使用字符集819 ,或其他与819 属于同一语言集(即英语)的字符集,如437等。不同语言集的字符集是不能互相转换的,使用属于不同语言集的字符集的队列管理器也不能启动通道互相交换数据。
3 所有部件的名字最好都用大写,避免发生名字不匹配的错误。在高版本MQ的MQSC 命令界面中小写的名字要用单引号括起,否则命令处理程序不能正确识别;如果与主机通讯,主机通常都只支持大写的名字。
最后要注意不要使用太长的名字。
通道代理程序MCA启动命令如下:
mca -m queue_manager [-f filename] [-c channel_name] [-c channel_name...] &
一个MCA进程可以支持多个通道,在指定的文件中分行列出所有通道或在启动命令中分别列出所有通道都可以启动通道。通道启动后,由于通讯线路故障和系统故障等原因,可能出现发送、接收双方通道的消息序列号不一致,在错误日志出现类似下面的错误信息:
18-May-00 11:19:57.800 mca_ack_rcvd: Error flag in ACK set, flags = 2
18-May-00 11:19:57.800 mca_log_nak: QMA.TO.QMB Out of Sequence. Sent MSN 74 when remote expecting MSN 1
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 系统 维护 指南 通道 管理 MQ 队列 定义 文件 启动 消息 |
注册
个人空间
