#java #spring-jms
Вопрос:
Я хотел бы создать список JMS MessageProducer из одного соединения. Каждый из этих производителей должен быть создан из отдельной сессии.
Я бы хотел что-то подобное весной, но, очевидно, это не работает.
@Bean(destroyMethod = "close")
@Scope("prototype")
public Session jmsSession(final Connection jmsConnection) {
<create a session>
}
@Bean(destroyMethod = "close")
public List<MessageProducer> jmsProvider(List<Session> jmsSessionList) {
<Create a list of MessageProducers from the list of jmsSessionList>
}
Есть ли какой-нибудь способ, которым я могу этого достичь?
- Создайте определенное количество сеансов из одного подключения.(Количество сеансов является свойством конфигурации в файле yml)
- Вставьте список сеансов в другой компонент, чтобы создать MessageProducer
- Укажите метод уничтожения, чтобы уничтожить их.
Ответ №1:
Вы должны быть в состоянии делать то, что намереваетесь.
- Для этого вам нужно будет создать несколько
Session
компонентов следующим образом:@Configuration class SessionsConfiguration { @Autowired private GenericApplicationContext applicationContext; @Value("${your.configuration.key}") private int sessionsCount; @PostConstruct fun init() { for (int i : sessionsCount) { applicationContext.registerBean() // Here you have multiple possibilities. // Check reference documentation at https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/support/GenericApplicationContext.html } } }
- Ваш код уже должен это делать.
- Ваш код уже должен это делать.
Комментарии:
1. Спасибо. Это не то, что я намеревался сделать. Количество сеансов — это свойство конфигурации, которое может изменяться от 2 до 10. Поэтому мне нужно динамически создавать сеансы, а не жестко их кодировать.
2. Это возможно. Я отредактирую свой ответ.
3. Выполнено. Пожалуйста, проверьте это.