You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot WAR包部署Tomcat,JMS监听器遇线程与内存耗尽问题

配置Spring Boot应用连接TIBCO Message Broker的JMS连接工厂

我来帮你整理这段TIBCO JMS连接工厂的配置代码,同时补充一些生产环境中实用的细节,让你的配置更规范可靠:

格式化后的核心连接工厂配置

@Bean
public TibjmsConnectionFactory tibjmsConnectionFactory() {
    TibjmsConnectionFactory tibjmsConnectionFactory = new TibjmsConnectionFactory("http://172.16.23.1");
    tibjmsConnectionFactory.setUsername("abcd");
    tibjmsConnectionFactory.setUserPassword("abcd");
    
    // 可选:添加稳定性配置,比如连接重试策略
    // tibjmsConnectionFactory.setConnAttemptCount(3); // 连接尝试次数
    // tibjmsConnectionFactory.setConnAttemptDelay(2000); // 重试间隔(毫秒)
    return tibjmsConnectionFactory;
}

关键优化与补充说明

  • 连接地址注意事项:你当前用的是HTTP协议的Broker地址,如果你的TIBCO Message Broker使用的是原生TIBCO协议(多数生产场景是这个),需要替换为tcp://172.16.23.1:7222格式(7222是默认端口,具体以你的Broker配置为准)。
  • 安全的凭证管理:硬编码用户名密码在代码里是不推荐的,建议通过Spring的@Value从配置文件读取:
    @Value("${tibco.jms.broker-url}")
    private String brokerUrl;
    
    @Value("${tibco.jms.username}")
    private String jmsUsername;
    
    @Value("${tibco.jms.password}")
    private String jmsPassword;
    
    @Bean
    public TibjmsConnectionFactory tibjmsConnectionFactory() {
        TibjmsConnectionFactory tibjmsConnectionFactory = new TibjmsConnectionFactory(brokerUrl);
        tibjmsConnectionFactory.setUsername(jmsUsername);
        tibjmsConnectionFactory.setUserPassword(jmsPassword);
        return tibjmsConnectionFactory;
    }
    
    对应的application.properties配置:
    tibco.jms.broker-url=http://172.16.23.1
    tibco.jms.username=abcd
    tibco.jms.password=abcd
    
  • 主题监听的完整配置:要实现JMS主题消息监听,还需要配置监听容器工厂并添加监听方法:
    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(TibjmsConnectionFactory connectionFactory) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPubSubDomain(true); // 必须开启,否则默认是队列模式
        factory.setConcurrency("3-5"); // 设置监听线程的并发范围,按需调整
        return factory;
    }
    
    // 示例主题监听方法
    @JmsListener(destination = "your.target.topic", containerFactory = "jmsListenerContainerFactory")
    public void handleTopicMessage(String messagePayload) {
        // 这里编写你的消息处理逻辑
        log.info("Received message from topic: {}", messagePayload);
    }
    

内容的提问来源于stack exchange,提问作者Indraneel Bende

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:50:58