JmsTransactionManager с большим количеством фабрик соединений - PullRequest
0 голосов
/ 01 апреля 2011

Мне было интересно, может ли кто-нибудь помочь мне с большой проблемой, я пытаюсь внедрить больше jmsTransactionManager в Spring 2.5.6, но это не работает.

У меня есть 5 фабрики соединений, потому что у меня естьчитать и писать из 5 разных сред.Все они находятся в моей очереди xml bean, но потому что, когда я читаю сообщения из одной очереди и они не соответствуют опциям, я делаю откат с менеджером транзакций.

Итак, мой вопрос, как я могунастроить больше JmsTransactionManager.

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Вам придется использовать JTA, если вам нужен транзакционный доступ к более чем одному сеансу JMS. В этом случае вы бы вообще не использовали JmsTransactionManager, вы бы использовали JtaTransactionManager и включили бы все эти соединения в распределенную транзакцию. Это предполагает, что все ваши JMS-соединения совместимы с XA (часто раз фабрика соединений отличается, например ActiveMQXAConnectionFactory и ActiveMQConnectionFactory).

Если вы не используете сервер приложений (glassfish, weblogic, jboss AS и т. Д.), Вы можете развернуть отдельную реализацию JTA (atomikos или jboss TS). Конфигурация каждого из них несколько отличается, но Spring поддерживает большинство из них.

0 голосов
/ 03 апреля 2011

вы можете добавить ссылку на ConnectionFactory в диспетчер транзакций

<bean class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="connectionFactory1"></property>
</bean>

<bean class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="connectionFactory2"></property>
</bean>
...