मेरे पास एक स्प्रिंग एप्लिकेशन है जो हाइबरनेट और पोस्टग्रेएसक्यूएल का उपयोग करता है। यह वसंत AMQP (RabbitMQ) का भी उपयोग करता है।वसंत AMQP/RabbitMQ और हाइबरनेट लेनदेन प्रबंधक
मैं हाइबरनेट लेन-देन प्रबंधक के रूप में विन्यस्त उपयोग कर रहा हूँ इस प्रकार है:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory" p:dataSource-ref="dataSource" />
मैं अतुल्यकालिक संदेश के स्वागत के लिए SimpleMessageListenerContainer उपयोग कर रहा हूँ के रूप में विन्यस्त:
@Resource(name="transactionManager")
private PlatformTransactionManager txManager;
@Autowired
private MyListener messageListener;
@Bean
public SimpleMessageListenerContainer mySMLC()
{
final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(rabbitConnectionFactory);
container.setQueueNames("myQueue");
final MessageListenerAdapter adapter = new MessageListenerAdapter(messageListener);
adapter.setMessageConverter(converter);
container.setMessageListener(adapter);
container.setChannelTransacted(true);
container.setTransactionManager(txManager);
return container;
}
तो मूल रूप से मुझे लगता है कि स्वागत निर्दिष्ट किया है संदेशों के लेनदेन होना चाहिए। संदेश श्रोता एक ऐसी सेवा को कॉल करता है जिसमें @ ट्रान्सएक्शनल के साथ एनोटेटेड विधियां हो सकती हैं और संभवतः डीबी पर सीआरयूडी संचालन कर सकती हैं।
मेरा सवाल है, क्या SimpleMessageListenerContainer स्तर पर लेनदेन को प्रबंधित करने के लिए HibernateTransactionManager का उपयोग करने में कोई समस्या है? क्या RabbitMQ से संदेशों को प्राप्त करने के लिए डीबी लेनदेन प्रबंधक का उपयोग करने में कोई समस्या होगी?
मुझे यहां एक्सए की उम्मीद नहीं है। मैं बस यह सुनिश्चित करना चाहता हूं कि यदि सेवा द्वारा डीबी पर कोई भी संचालन विफल रहता है, तो संदेश खरगोश एमक्यू ब्रोकर को नहीं मिलता है।