Зарегистрируйте конечные точки с транзакционным

использование Spring 5 на Java 1.9

Использование конфигурации, реализующей JmsListenerConfigurer для регистрации конечных точек:

@Configuraiton
public class Endpointer implements JmsListenerConfigurer {

   @Override
    public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
      SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
      ....
   }
}

Есть ли способ при добавлении прослушивателя сообщений сообщить Spring, чтобы сделать его транзакционным (@Transactional)? Также хотелось бы иметь возможность использовать конвертеры сообщений. Вместо того, чтобы передавать метод, подобный onMessage, в конечную точку setMessageListener, я бы хотел, чтобы лямбда-выражение принимало строку (т.е. запускается преобразователь, принимающий сообщение в строку) и имело возможность получать заголовки jms.


person Matthew Campbell    schedule 10.01.2018    source источник


Ответы (1)


Вы не делаете это Spring Bean
Конечная точка SimpleJmsListenerEndpoint = new SimpleJmsListenerEndpoint();

сделайте это пружинным компонентом и добавьте @Transactional

person Jeryl Cook    schedule 10.01.2018
comment
Мысль транзакционная (атрибут) была только для методов, а не для bean-компонентов, и что вы имеете в виду, делая конечную точку bean-компонентом? Простой слушатель принимает только слушатель метода, а не bean-компонент, такой как MethodJmsLisyenerEmdpoint, как это делается внутри Spring при разрешении JmsListener. - person Matthew Campbell; 10.01.2018
comment
SimpleJmsListenerEndpoint.onMessage(..) . используйте @Transational для этого. - person Jeryl Cook; 10.01.2018