扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
第一部分:有关MQ对象配置的最佳实践
对于MQ系统配置,我们要规划MQ通讯网络,确定系统的拓扑结构,确定各种对象的属性和命名规则并创建所需的各种对象等,首先,我们谈一谈在系统建设之初,如何设计和定义MQ的各种对象。
1、有关队列管理器:
创建队列管理器时,应考虑的因素主要有:
2) 应该为队列管理器指定和建立死信队列;
3)对最多打开句柄数MAXHANDS(缺省为256,如果您需要多于256个应用程序同时连接队列管理器,应增大该值),最大消息长度MAXMSGL,最多的未提交的消息个数MAXUMSGS属性(缺省为10000,如果您使用了消息分段或分组,某个大消息的分段个数超过了10000,应增大该值)的考虑;
4) 创建完队列管理器之后,应修改队列管理器的配置文件,考虑有关TCP和通道有关的参数的配置,举例如下:
TCP:KeepAlive=YesChannels:AdoptNewMCA=ALLPipeLineLength=2MaxActiveChannels=200
2、有关队列:
对于队列的属性,应该考虑的因素主要有:
1) 永久性和非永久性设置:尤其要注意的是DEFPSIST属性的缺省值为No,若要保证消息的安全可靠,必须将其设置为Yes;
2) 对于本地队列和传输队列,要考虑队列的最大深度MAXDEPTH(缺省为5000,应根据实际情况计算该值),队列中每个消息的最大字节数MAXMSGL的配置。
3、有关通道:
对于通道的属性,应该考虑的因素主要有:
2) 对于发送类型的通道,要考虑通道的断开间隔(DISCINT)、短重试次数(SHORTRTY)、短重试间隔(SHORTTMR)、长重试次数(LONGRTY)、长重试间隔(LONGTMR)、批处理大小(BATCHSZ)的配置。
第二部分:有关MQ程序开发的最佳实践
Request/Reply(请求/应答)方式相对复杂一些,在消息发出之后,你需要等待对方的处理结果,在这种情况下,你通常需要考虑其他一些问题,如:
等待应答的时间是多少?
如果没有收到应答,是否再次发出请求?
应答发出之前是否会有数据库操作或其他交易被执行?
本次请求/应答过程的会话(session)信息是否需要被保留?
通常,我们要根据用户的需求来决定采用何种通讯模式,不同的通讯模式之下对应用程序的考虑将会有所不同,使用的MQ API的参数和选项也将不同。
为了使你的MQ应用能够更加健壮,并且具有更强的可维护性,我们要学会灵活高效地使用MQ的一些特性以及相关的API选项,从而提到应用程序的质量、灵活性、可靠性和性能。这里,我们将给出一些较典型的建议。
1. 在每一个MQ API调用之后,必须检查完成码(completion code)和原因码(reason code),对于非零的返回码,必须进行相应的处理,必要时,最好将返回码记录错误日志,从而在应用程序出现运行故障时便于检查和处理。
2. 对MQCONN, MQOPEN,MQCLOSE, MQDISC的使用
由于MQCONN, MQOPEN,MQCLOSE, MQDISC相对于MQGET和MQPUT来说是比较消耗资源
3. 读取消息时,等待时间间隔的设置
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者