Giriş
Eğer kodla JMS listener tanımlamak istersek JmsListenerConfigurer arayüzünü gerçekleştirmek gerekir. Eğer anotasyonlaJMS listener tanımlamak istersek @JmsListener kullanırız.
Eğer kodla JMS listener tanımlamak istersek JmsListenerConfigurer arayüzünü gerçekleştirmek gerekir. Eğer anotasyonlaJMS listener tanımlamak istersek @JmsListener kullanırız.
Şöyle yaparız
Elimizde şöyle bir kod olsun
JmsListenerContainerFactory tipinden bir arayüz bekler. Bu arayüzü gerçekleştiren sınıf genellikle DefaultJmsListenerContainerFactory nesnesidir.
Örnek
Elimizde şöyle bir kod olsun.
Elimizde şöyle bir kod olsun.
Okunacak kuyruk ismidir.
spring.jms.listener.acknowledge-mode=auto
spring.jms.listener.auto-startup=true
spring.jms.listener.concurrency=5
spring.jms.listener.max-concurrency=10
spring.jms.pub-sub-domain=false
spring.jms.template.priority=100
spring.jms.template.qos-enabled=true
spring.jms.template.delivery-mode=persistent
concurrenycy AlanıElimizde şöyle bir kod olsun
@Bean
public JmsListenerContainerFactory<?> fact(ConnectionFactory connFact) {
DefaultJmsListenerContainerFactory fact = new DefaultJmsListenerContainerFactory();
fact.setConnectionFactory(connFact);
fact.setSessionTransacted(true);
fact.setRecoveryInterval(10000L);
return fact;
}
Şöyle yaparız.@JmsListener(concurrency = "1-50", containerFactory = "fact", destination = "dest")
public void receiveMessage(Message message, Session session) {
// ...
}
containerFactory AlanıJmsListenerContainerFactory tipinden bir arayüz bekler. Bu arayüzü gerçekleştiren sınıf genellikle DefaultJmsListenerContainerFactory nesnesidir.
Örnek
Elimizde şöyle bir kod olsun.
@Bean
public JmsListenerContainerFactory<?> topicListenerFactory(
ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
...
return factory;
}
Şöyle yaparız.@JmsListener(destination = "MYTOPIC",containerFactory = "topicListenerFactory")
public void receiveMessageFromQueue(String message) {
System.out.println("Message recv from queue ->" + message);
}
ÖrnekElimizde şöyle bir kod olsun.
@Bean
DataSource dataSource() throws SQLException {
OracleDataSource dataSource = new OracleDataSource();
dataSource.setUser("yourusername");
dataSource.setPassword("yourpassword");
dataSource.setURL("jdbc:oracle:thin:@yourserver:1521:xe");
dataSource.setImplicitCachingEnabled(true);
dataSource.setFastConnectionFailoverEnabled(true);
return dataSource;
}
@Bean
public QueueConnectionFactory connectionFactory() throws Exception {
return AQjmsFactory.getQueueConnectionFactory(dataSource());
}
Elimizde şöyle bir kod olsun.@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}
Elimizde şöyle bir kod olsun.@Bean
public JmsListenerContainerFactory<?> myJMSListenerFactory(
QueueConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
// factory.setConcurrency("15-20");
factory.setMessageConverter(jacksonJmsMessageConverter());
configurer.configure(factory, connectionFactory);
return factory;
}
Şöyle yaparız.@Component
public class Receiver {
@JmsListener(destination = "YourQueueName", containerFactory = "myJMSListenerFactory")
public void receiveEmail(Email email) {
System.out.println("Received <" + email + ">");
}
}
destination AlanıOkunacak kuyruk ismidir.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
@JmsListener(destination = "MYQUEUE")
public void receiveMessageFromQueue(String message) {
System.out.println("Message recv from queue ->" + message);
}
ÖrnekŞöyle yaparız.
@JmsListener(destination = "myQueue", containerFactory = "myFactory"){
selector Alanı
Örnek
Şöyle yaparız
@Slf4j@RequiredArgsConstructor@Componentpublic class ConsumerTopico {private final PersonRepository personRepository;@JmsListener( destination = "${activemq.topic-name}", subscription = "assinatura",
selector = "test=false OR test is null")public void listen(String mensagem) {Person person = new Person();try {Gson gson = new Gson();person = gson.fromJson(mensagem, Person.class);personRepository.save(person);} catch(Exception e){...}}}
Hiç yorum yok:
Yorum Gönder