Spring 4.x集成Solace JMS连接超时问题求助
解决Spring 4.x连接Solace JMS的连接超时问题
从你给出的错误日志和Spring配置来看,最直接的问题是Solace SMF端口配置错误,这也是导致连接超时的核心原因,我们一步步来排查和解决:
1. 修正SMF端口配置
Solace Broker的SMF(Solace消息协议)默认监听端口是55555,而你的配置里写的是24端口,这显然是不正确的。你需要修改solaceJndiTemplate中的java.naming.provider.url配置:
修改前:
<entry value="smf://192.168.56.101:24" key="java.naming.provider.url" />
修改后(使用默认SMF端口):
<entry value="smf://192.168.56.101:55555" key="java.naming.provider.url" />
如果你的Solace Broker修改过默认SMF端口,请替换为实际的端口号。
2. 额外排查验证步骤
如果修正端口后仍有问题,可以继续检查以下几点:
- 网络连通性测试:在运行Spring应用的机器上,执行命令
telnet 192.168.56.101 55555(或实际端口),确认能正常连通。如果不通,检查Broker所在机器的防火墙、安全组是否开放了对应端口,或者网络路由是否正常。 - Solace Broker配置验证:
- 确认Broker已启用SMF服务,并且监听端口与配置一致;
- 确认
Spring_Spring_VPN这个VPN实例存在,且spring_user用户拥有该VPN的访问权限; - 确认用户密码
spring_password正确无误。
- JNDI资源存在性检查:登录Solace管理控制台,确认已创建
JNDI/CF/ncs连接工厂和JNDI/Q/requests队列,注意Solace的JNDI名称是大小写敏感的,必须与配置完全匹配。
完整修正后的核心配置片段
<bean autowire="default" lazy-init="default" class="org.springframework.jndi.JndiTemplate" id="solaceJndiTemplate"> <property name="environment"> <map> <entry value="smf://192.168.56.101:55555" key="java.naming.provider.url" /> <entry value="com.solacesystems.jndi.SolJNDIInitialContextFactory" key="java.naming.factory.initial" /> <entry value="spring_user@Solace_Spring_VPN" key="java.naming.security.principal" /> <entry value="spring_password" key="java.naming.security.credentials" /> </map> </property> </bean>
内容的提问来源于stack exchange,提问作者saurabh mahajan
相关产品推荐
相关产品推荐

