Spring Boot连接IBM MQ时JMS消息转换报错求助
Spring Boot 3连接IBM MQ发送消息报错:UnknownFormatConversionException
环境信息
- JAVA 20
- IBM WebSphere MQ Explorer版本:7.5.0.2
- Spring Boot 3.0.5
依赖配置
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>mq-jms-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency> <dependency> <groupId>javax.jms</groupId> <artifactId>javax.jms-api</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>6.0.6</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>wmq.jmsra</artifactId> <version>9.0.4.0</version> </dependency> </dependencies>
Controller代码
@RestController @EnableJms @RequestMapping("/test/") public class IBMController { @Value("${ibm.mq.host}") private String host; @Value("${ibm.mq.port}") private Integer port; @Value("${ibm.mq.queueManager}") private String queueManager; @Value("${ibm.mq.channel}") private String channel; @Value("${ibm.mq.receiveTimeout}") private long receiveTimeout; @Value("${ibm.mq.username}") private String user; @Value("${ibm.mq.password}") private String password; @Autowired private JmsTemplate jmsTemplate; @RequestMapping("send") public String sendMsg(){ String msg = "tst"; try{ jmsTemplate.convertAndSend("localQ",msg); return "OK"; }catch (JmsException e ) { e.printStackTrace(); return "FAIL"; } } }
配置Bean
连接工厂配置1
@Bean public MQQueueConnectionFactory mqQueueConnectionFactory(){ MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory(); try{ mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT); mqQueueConnectionFactory.setCCSID(1208); mqQueueConnectionFactory.setChannel(channel); mqQueueConnectionFactory.setPort(port); mqQueueConnectionFactory.setQueueManager(queueManager); }catch (Exception e){ e.printStackTrace(); } return mqQueueConnectionFactory; }
JMS模板配置
@Bean public JmsTemplate jmsTemplate() throws JMSException { JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(mqQueueConnectionFactory()); return jmsTemplate; }
连接工厂配置2(尝试过的另一种方案)
@Bean public JmsConnectionFactory createConnectionFactory() throws JMSException{ JmsFactoryFactory ff = JmsFactoryFactory.getInstance( JmsConstants.JAKARTA_WMQ_PROVIDER ); JmsConnectionFactory factory = ff.createConnectionFactory(); factory.setObjectProperty( WMQConstants.WMQ_CONNECTION_MODE, Integer.valueOf( WMQConstants.WMQ_CM_CLIENT ) ); factory.setStringProperty( WMQConstants.WMQ_HOST_NAME, host ); factory.setObjectProperty( WMQConstants.WMQ_PORT, port ); factory.setStringProperty( WMQConstants.WMQ_QUEUE_MANAGER, queueManager ); factory.setStringProperty( WMQConstants.WMQ_CHANNEL, channel ); factory.setStringProperty( WMQConstants.USERID, user ); factory.setStringProperty( WMQConstants.PASSWORD, password ); return factory; }
报错信息
java.util.UnknownFormatConversionException: Conversion = '-' at java.base/java.util.Formatter.parse(Formatter.java:2842) at java.base/java.util.Formatter.format(Formatter.java:2763) at java.base/java.util.Formatter.format(Formatter.java:2717) at java.base/java.lang.String.format(String.java:4155) at com.ibm.mq.jmqi.system.JmqiConnectOptions.nullToSpace(JmqiConnectOptions.java:564) at com.ibm.mq.jmqi.system.JmqiConnectOptions.setReceiveExitsUserData(JmqiConnectOptions.java:560) at com.ibm.msg.client.jakarta.wmq.internal.WMQConnection.getConnectOptions(WMQConnection.java:1528) at com.ibm.msg.client.jakarta.wmq.internal.WMQConnection.<init>(WMQConnection.java:388) at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8683) at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:8023) at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:322) at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl.createContext(JmsConnectionFactoryImpl.java:481)
内容的提问来源于stack exchange,提问作者Moksi
相关产品推荐
相关产品推荐

