Spring Framework JMS TOMENTION DAME
-
14-11-2019 - |
Вопрос
Я хотел инкапсулировать детали создания / разрешения пункта назначения в какую-то реализацию PeritionResolver.
Детали создают соединение, создание сеанса, создание / разрешение пункта назначения.
такая реализация будет плохой подход?
public class SessionAwareDestinationResolver extends DynamicDestinationResolver {
private Session session;
@Inject
public SessionAwareDestinationResolver(ConnectionFactory connectionFactory) {
try {
Connection connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
} catch (JMSException ex) {
throw JmsUtils.convertJmsAccessException(ex);
}
}
public Destination resolveDestinationName(String destinationName,
boolean pubSubDomain) throws JMSException {
return super.resolveDestinationName(session, destinationName,
pubSubDomain);
}
}
.
<Сильное> Обновление
будет лучшим подходом, чтобы просто обернуть определенную задачу в выполнении действий?
Решение
Не уверен, что я полностью понял вас, jmstemplate уже предоставляет очень хорошую абстракцию для отправки / получения сообщения от поставщиков JMS - вам не нужно иметь дело с Roam JMS ConnectionFactory или сеансом.Если у вас нет конкретных потребностей в сессии - скажем, чтобы реализовать браузер очередей или запрос / ответ на той же сессии и т. Д., Если это тот случай, этот подход к использованию сеанса Callback с методом выполнения JMStemplate, как вы упоминали, это хорошоИдея, а не нуждающаяся в том, чтобы написать свою собственную абстракт.