Solace Community is getting a facelift!

On March 3rd we will be starting the process of migrating Solace Community to a new platform. As a result, Solace Community will go in to a temporary read-only state. You will still be able to come onto Solace Community and search through posts to find answers, but you won't be able to ask questions, post comments, or react in any way.

We hope to have the migration complete by Wednesday March 5th (or sooner), so please keep an eye out!

Setting multiple factories to connect to solace in JMS

guansheng
guansheng Member Posts: 1

I want to establish multiple factory connections in the program at the same time, but I find that after establishing the connection, JMS will not receive the information sent by solace. Here is the code for establishing the connection. Please forgive me for the help of the solution

@Value("${solace.ssl.host}")
private String host;
@Value("#{${solace.ssl.vpn}}")
private Map<String,String> vpns;
@Value("#{${solace.ssl.username}}")
private Map<String,String> userNames;
@Value("${solace.ssl.trustStore}")
private String trustStore;
@Value("${solace.ssl.trustStorePassword}")
private String trustStorePassword;
@Value("${solace.ssl.keyStore}")
private String keyStore;
@Value("${solace.ssl.keyStorePassword}")
private String keyStorePassword;
@Value("${solace.ssl.authenticationScheme}")
private String authenticationScheme;

/**
 * SCSTAR
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public DefaultJmsListenerContainerFactory cFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    factory.setErrorHandler(errorHandler);
    return factory;
}


/**
 * SCSTAR
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public JmsListenerContainerFactory<?> starQueueFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(setSolConnectionFactoryParam(connectionFactory,"SCSTAR"));
    factory.setPubSubDomain(Boolean.FALSE);
    factory.setErrorHandler(errorHandler);
    return factory;
}
/**
 * SCSTAR
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public JmsListenerContainerFactory<?> starTopicFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(setSolConnectionFactoryParam(connectionFactory,"SCSTAR"));
    factory.setPubSubDomain(Boolean.TRUE);
    factory.setErrorHandler(errorHandler);
    return factory;
}

/**
 * RTA
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public JmsListenerContainerFactory<?> rsaFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(setSolConnectionFactoryParam(connectionFactory,"RTA"));
    factory.setErrorHandler(errorHandler);
    return factory;
}

/**
 * ccsService
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public JmsListenerContainerFactory<?> ccsServiceFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(setSolConnectionFactoryParam(connectionFactory,"CCSSERVICES"));
    factory.setErrorHandler(errorHandler);
    return factory;
}

/**
 * ccsReport
 * @param connectionFactory
 * @param errorHandler
 * @return
 * @throws Exception
 */
@Bean
public JmsListenerContainerFactory<?> ccsReportFactory(SolConnectionFactory connectionFactory, DemoErrorHandler errorHandler) throws Exception {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(setSolConnectionFactoryParam(connectionFactory,"CCSSERVICES"));
    factory.setErrorHandler(errorHandler);
    return factory;
}



private SolConnectionFactory setSolConnectionFactoryParam(SolConnectionFactory connectionFactory,String param){
    connectionFactory.setHost(host);
    connectionFactory.setUsername(userNames.get(param));
    connectionFactory.setVPN(vpns.get(param));
    connectionFactory.setSSLExcludedProtocols("sslv3,tlsv1,tlsv1.1");
    connectionFactory.setSSLTrustStore(trustStore);
    connectionFactory.setSSLTrustStorePassword(trustStorePassword);
    connectionFactory.setSSLKeyStore(keyStore);
    connectionFactory.setSSLKeyStorePassword(keyStorePassword);
    connectionFactory.setAuthenticationScheme(authenticationScheme);
    return  connectionFactory;
}


@Service
public class DemoErrorHandler implements ErrorHandler {
    @Override
    public void handleError(Throwable t) {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(os);
        t.printStackTrace(ps);
        try {
            String output = os.toString("UTF8");
            logger.error("============= Error processing message: " + t.getMessage()+"\n"+output);
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

This Month's Leaders

This Week's Leaders