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
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控制台
2.2.2 创建通道
2.2.3 通道ZSJN赋权限
2.2.4 创建通道认证记录
用户映射和地址映射各一条
用户映射允许哪些用户连接,地址映射允许哪些地址连接
2.2.5 创建队列
2.2.6 添加队列权限记录
2.2.7 设置队列权限
2.2.8 队列管理器添加权限记录
2.2.8 队列管理器权限记录设置权限
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)
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!