Spring Framework JMS Подход с разрешением имен получателей - PullRequest
0 голосов
/ 25 января 2012

Я хотел включить детали создания / разрешения пункта назначения в какую-то реализацию DestinationResolver.

Подробности о создании соединения, создании сеанса, создании / разрешении пункта назначения.

Будет ли такая реализация плохим подходом?

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);
    }
}

ОБНОВЛЕНИЕ

Будет ли лучший подход просто заключить конкретную задачу в выполнение?действие?

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jms/core/JmsTemplate.html#execute(org.springframework.jms.core.SessionCallback)

1 Ответ

0 голосов
/ 26 января 2012

Не уверен, что если я вас полностью понял, JmsTemplate уже обеспечивает очень хорошую абстракцию для отправки / получения сообщений от провайдеров JMS - вам не нужно иметь дело с необработанным JMS ConnectionFactory или Session.Если у вас нет особой необходимости в сеансе - скажем, для реализации браузера очереди или запроса / ответа в том же сеансе и т. Д., Если это так, то подход использования SessionCallback с методом execute JmsTemplate, как вы упомянули, является хорошимидея, а не необходимость писать собственную абстракцию.

...