Получение 'MQCC_FAILED' причина '2072' 'MQRC_SYNCPOINT_NOT_AVAILABLE' при попытке отправить сообщение
У меня есть MDB (mdbA) в JBoss 5.1 GA, который слушает очередь MQ 7.0. После получения сообщение сохраняется в базе данных MySQL, и я хотел бы отправить сообщение в другую очередь (queueB), а затем продолжить обработку сообщения в mdbA, который выполняет дополнительные вставки и отправляет сообщение в HornetQ. Все отлично работает для первого сообщения, и я вижу сообщение в базе данных, а также queueB и hornetQ. Для всех последующих сообщений "отправить в очередь B" приводит к ошибке "MQRC_SYNCPOINT_NOT_AVAILABLE" 2072.
У моего mdbA есть следующие аннотации. @TransactionAttribute (TransactionAttributeType.REQUIRED) @Service
Пожалуйста, дайте мне знать, если мне нужно предоставить больше информации.
Может ли кто-нибудь помочь?
1 ответ
Решил аналогичную проблему в WebLogic, где сам MDB был аннотирован @TransactionManagement(TransactionManagementType.BEAN), и выбор вместо этого @TransactionManagement(TransactionManagementType.CONTAINER) решил проблему без атрибута Transaction для методов, следовательно, по умолчанию REQUIRED.
На самом деле, надежные MDB скорее всего будут делегировать транзакции контейнеру и не будут пытаться явно контролировать их в коде. Если вы используете тип управления BEAN и явно не открываете контекст транзакции, точка синхронизации будет недоступна...