pom.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>4.0.0</version> <relativePath/></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jms</artifactId> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>com.ibm.mq.jakarta.client</artifactId> <version>9.4.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency></dependencies>
docker-compose.yml
services: ibmmq: image: icr.io/ibm-messaging/mq:latest environment: LICENSE: accept MQ_QMGR_NAME: QM1 MQ_APP_PASSWORD: pass ports: - "1414:1414" - "9443:9443"
Unchanged — the dev image auto-creates DEV.QUEUE.1, DEV.APP.SVRCONN, and app user app.
application.yml
ibm: mq: queue-manager: QM1 channel: DEV.APP.SVRCONN conn-name: localhost(1414) user: app password: pass queue: DEV.QUEUE.1
MQConfig.java
@Configurationpublic class MQConfig { @Bean public MQConnectionFactory mqConnectionFactory( @Value("${ibm.mq.queue-manager}") String queueManager, @Value("${ibm.mq.channel}") String channel, @Value("${ibm.mq.conn-name}") String connName, @Value("${ibm.mq.user}") String user, @Value("${ibm.mq.password}") String password) throws JMSException { MQConnectionFactory cf = new MQConnectionFactory(); cf.setTransportType(WMQConstants.WMQ_CM_CLIENT); cf.setQueueManager(queueManager); cf.setChannel(channel); cf.setConnectionNameList(connName); cf.setStringProperty(WMQConstants.USERID, user); cf.setStringProperty(WMQConstants.PASSWORD, password); return cf; } @Bean public JmsTemplate jmsTemplate(MQConnectionFactory cf, @Value("${ibm.mq.queue}") String queue) { JmsTemplate template = new JmsTemplate(cf); template.setDefaultDestinationName(queue); return template; }}
MessageService.java
@Servicepublic class MessageService { private final JmsTemplate jmsTemplate; public MessageService(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } public void send(String text) { jmsTemplate.convertAndSend(text); } public String receive() { return (String) jmsTemplate.receiveAndConvert(); }}
MessageServiceIT.java
@SpringBootTestclass MessageServiceIT { @Autowired private MessageService messageService; @Test void sendAndReceiveMessage() { messageService.send("hello mq"); String received = messageService.receive(); assertThat(received).isEqualTo("hello mq"); }}
Running it
docker compose up -d# wait ~30s for QM1 to finish startingmvn test

Hinterlasse einen Kommentar