7 Mart 2018 Çarşamba

SpringJMS DefaultJmsListenerContainerFactory Sınıfı

Giriş
DefaultJmsListenerContainer nesnesi yaratır. Normalde bu sınıfı Spring yaratıyor. Bazı özelliklerini değiştirmek istersek elle kodlamamız gerekir.

Örnek
Şöyle yaparız
@Configuration
static class JmsConfiguration {

  @Bean
  public DefaultJmsListenerContainerFactory myFactory(
    DefaultJmsListenerContainerFactoryConfigurer configurer) {
    
    DefaultJmsListenerContainerFactory factory =
      new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, connectionFactory());
    factory.setMessageConverter(myMessageConverter());
    return factory;
  }
}
Daha sonra kullanmak için şöyle yaparız
@Component
public class MyBean {

  @JmsListener(destination = "someQueue", containerFactory="myFactory")
  public void processMessage(String content) {
    // ...
  }
}
constructor
Şöyle yaparız.
DefaultJmsListenerContainerFactory fact =
  new DefaultJmsListenerContainerFactory();
setConcurrency metodu
Şöyle yaparız
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
  DefaultJmsListenerContainerFactory factory =
    new DefaultJmsListenerContainerFactory();
  factory.setConnectionFactory(connectionFactory());
  factory.setConcurrency("1-1");

  factory.setMessageConverter(jacksonJmsMessageConverter());
  return factory;
}
setConnectionFactory metodu
Şöyle yaparız.
ConnectionFactory connFact = ...;
fact.setConnectionFactory(connFact);
setRecoveryInterval metodu
Şöyle yaparız.
fact.setRecoveryInterval(10000L);
setSessionTransacted metodu
Şöyle yaparız.
fact.setSessionTransacted(true);
setSubscriptionDurable metodu
Örnek
Şöyle yaparız
@Bean
public JmsListenerContainerFactory jmsFactoryTopic(ConnectionFactory connectionFactory,
                                DefaultJmsListenerContainerFactoryConfigurer configurer) {
  DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
  configurer.configure(factory, connectionFactory);
  factory.setPubSubDomain(true);
  factory.setClientId("produtor");
  factory.setSubscriptionDurable(true);
  return factory;
}

Hiç yorum yok:

Yorum Gönder