如何在Docker Compose部署IBM MQ时自动创建自定义队列
IBM MQ Docker Compose 自动创建自定义队列方案
实现步骤
1. 编写MQSC队列定义脚本
在docker-compose.yml同级目录下创建create-queues.mqsc文件,内容如下:
DEFINE QLOCAL(QUEUE1) REPLACE DEFINE QLOCAL(QUEUE2) REPLACE
REPLACE参数表示如果队列已存在则覆盖原有配置,避免启动时报重复定义错误,不需要覆盖可去掉。
2. 修改docker-compose.yml配置
修正原有配置的语法问题,新增脚本挂载配置,修改后完整配置如下:
ibm-mq: image: 'ibmcom/mq:latest' container_name: ibm-mq ports: - "1414:1414" - "9443:9443" environment: # 注意环境变量等号两侧不能有空格,否则会导致配置不生效 - LICENSE=accept - MQ_QMGR_NAME=QM1 volumes: # 挂载本地脚本到镜像的自动执行目录,队列管理器启动后会自动执行该目录下所有.mqsc后缀的脚本 - ./create-queues.mqsc:/etc/mqm/post-start/10-create-queues.mqsc # 可选配置:健康检查,确保MQ服务完全启动后再启动依赖它的Spring Boot应用 healthcheck: test: ["CMD", "dspmq", "-m", "QM1", "-o", "status"] interval: 10s timeout: 5s retries: 5
补充说明
- 官方IBM MQ镜像暂不支持仅通过环境变量直接创建自定义队列,挂载MQSC脚本是官方推荐的初始化配置方式
- 如果需要创建更多MQ对象(比如通道、主题、权限规则等),直接在上述mqsc脚本中追加对应定义语句即可
- 如果你的Spring Boot应用也在同一compose配置中,可以给应用服务添加
depends_on配置,指定等待ibm-mq服务健康检查通过后再启动,避免启动时连接失败
内容的提问来源于stack exchange,提问作者Arzybek
相关产品推荐
相关产品推荐

