1、安装

1.1 拉取镜像

docker pull store/ibmcorp/mqadvanced-server-dev:9.1.0.0

1.2 启动mq

docker run \
  --name IBMMQ \
  --env LICENSE=accept \
  --env MQ_QMGR_NAME=ZSJN \
  --env MQ_ADMIN_PASSWORD=123 \
  --env MQ_APP_PASSWORD=123 \
  --publish 1414:1414 \
  --publish 9443:9443 \
  --detach \
  store/ibmcorp/mqadvanced-server-dev:9.1.0.0
docker ps

upload successful

2、配置

2.1 配置用户

[root@localhost ibmmq]# docker exec -it IBMMQ bash  
(mq:9.1.0.0)root@f970f0efcb12:/# useradd ZSJN
(mq:9.1.0.0)root@f970f0efcb12:/# passwd ZSJN
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

2.2 配置队列

2.2.1 登录web控制台

upload successful

2.2.2 创建通道

upload successful

2.2.3 通道ZSJN赋权限

upload successful

2.2.4 创建通道认证记录

用户映射和地址映射各一条
用户映射允许哪些用户连接,地址映射允许哪些地址连接

upload successful

2.2.5 创建队列

upload successful

2.2.6 添加队列权限记录

upload successful

2.2.7 设置队列权限

upload successful

2.2.8 队列管理器添加权限记录

upload successful

2.2.8 队列管理器权限记录设置权限

upload successful

3、测试

3.1 配置文件

# ibm 队列配置
ibm.host=192.168.72.129
ibm.port=1414
ibm.channel=ZSJN
ibm.queue_manager=ZSJN
ibm.userId=ZSJN
ibm.password=123

3.2 队列配置



@Slf4j
@Configuration
public class IbmMqConfig {

    @Value("${ibm.host}")
    private String host;

    @Value("${ibm.port}")
    private Integer port;

    @Value("${ibm.channel}")
    private String channel;

    @Value("${ibm.queue_manager}")
    private String queue_manager;

    @Value("${ibm.userId}")
    private String userId;

    @Value("${ibm.password}")
    private String password;

    private String queue_name = Constants.AIRPORT_ICAO_CODE + ".TO.NTFM";


    @Bean
    MQQueueManager mqQueueManager() {
        MQQueueManager queueManager = null;
        MQEnvironment.hostname = host;
        MQEnvironment.port = port;
        MQEnvironment.channel = channel;
        MQEnvironment.userID = userId;
        MQEnvironment.password = password;

        try {
            queueManager = new MQQueueManager(queue_manager);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("创建队列管理器失败");
            System.exit(-1);
        }

        return queueManager;
    }


    @Bean
    MQQueue mqQueue(MQQueueManager queueManager) {
        MQQueue putQueue = null;

        try {
            int openOptionsArg = CMQC.MQOO_OUTPUT|CMQC.MQOO_INPUT_AS_Q_DEF|CMQC.MQOO_INQUIRE;
            putQueue = queueManager.accessQueue(queue_name, openOptionsArg);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("连接队列失败");
            System.exit(-1);
        }

        return putQueue;
    }
}

3.4 测试代码

    @Resource
    MQQueue putQueue;

    @Test
    void putmsg() {
        String msg = "测试消息";
        MQMessage myMessage = new MQMessage();
        try {
            myMessage.writeUTF(msg);
            MQPutMessageOptions pmo = new MQPutMessageOptions();
            putQueue.put(myMessage, pmo);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Test
    void getMsg() {
        MQMessage retrievedMessage = new MQMessage();

        MQGetMessageOptions gmo = new MQGetMessageOptions();
        try {
            putQueue.get(retrievedMessage, gmo);
            String msg = retrievedMessage.readUTF();
            System.out.println(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4、IBMMQ 命令行操作

ibmmq 9.2的web控制台没有创建队列管理器的入口了

创建队列管理器
docker exec -it IBMMQ crtmqm  QM.ACDM

启动队列管理器
docker exec -it IBMMQ strmqm   QM.ACDM

停止队列管理器
docker exec -it IBMMQ endmqm  QM.ACDM

修改队列管理器的字符集
docker exec -it IBMMQ runmqsc QM.ACDM

alter qmgr ccsid(1208)

upload successful



中间件     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!