生产环境中的每个变更都必须进行版本控制并追踪到更改它的特定人员以及原因。
是否有可能使用某种工具?如果没有,如何使用SVN或GIT进行MQ配置?
Websphere MQ 配置更改的最佳做法是什么?
我知道所有配置都在/var/mqm/qmgrs/QMNAME
目录中。但这些不是文本文件,因此简单的SVN不会告诉我改变了什么。
答案 0 :(得分:3)
WebSphere MQ不像静态编译工件,而是一个部分自我管理的生命系统。诸如集群,触发器,检测甚至应用程序之类的东西都可以在运行时更改MQ对象上的设置。
许多商店选择做的是将对象定义和授权控制列表存储在MQSC脚本中,并将这些文件保存在SVN或其他更改控制系统中。然后,要捕获他们启用并监控Configuration Events的实时更改,这些更改会报告更改的详细信息以及启动更改的用户ID。
特别是,WMQ集群中的对象在运行时更易变,因此脚本应该反映这一事实。可以将对象属性分类为它们是静态属性还是表示运行时状态。 MQSC脚本可以通过在单独的步骤中定义静态属性和动态属性来利用这一点。通过使用REPLACE
和NOREPLACE
选项,可以编写脚本,以便在重新运行脚本时保留集群状态。这支持一种更改控制方法,用于在版本化脚本中存储所有相关对象,而不是为系统的每次更改编写新脚本。捕获脚本版本之间的增量可为您提供所有静态属性和监视,事件消息为您提供所有更改的视图,包括对脚本中未捕获的动态属性的更新。
两步对象定义如下所示:
* Stateful attributes use NOREPLACE so rerunning the script does not
* reset them to default values at run-time
DEFINE QLOCAL (APP.FUNCTION.SUBFUNCTION.QA) +
GET(DISABLED) +
PUT(DISABLED) +
NOTRIGGER +
NOREPLACE
* Static values use the REPLACE option to make sure any changes
* are recorded next time the script runs
ALTER QLOCAL (APP.FUNCTION.SUBFUNCTION.QA) +
DESCR('APP service queue for QA') +
DEFPSIST(NO) +
BOTHRESH(5) +
BOQNAME('APP.FUNCTION.BACKOUT.QA') +
CLUSTER('DIV_QA') +
CLUSNL(' ') +
DEFBIND(NOTFIXED)
有关此方法的详细信息 Mission:Messaging: Migration, failover, and scaling in a WebSphere MQ cluster