Question

Je voulais résumer les détails de la création / résolvant une destination dans une sorte d'implémentation de destination.

Les détails créant une connexion, créant une session, créant / résolvant une destination.

Une telle implémentation serait-elle une mauvaise approche?

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

METTRE À JOUR

Une meilleure approche serait-elle juste pour envelopper la tâche spécifique dans une action d'exécution?

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

Était-ce utile?

La solution

Je ne sais pas si je t'ai complètement compris, JMSTEMPLAY Fournit déjà une très bonne abstraction pour envoyer / recevoir des messages des fournisseurs JMS - vous n'avez pas à traiter avec RAW JMS ConnectionFactory ou session. Sauf si vous avez un besoin spécifique pour une session - disons pour implémenter un navigateur de file d'attente ou une demande / réponse dans la même session, etc. idée plutôt que d'avoir besoin d'écrire votre propre abstraction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top