2014-09-04 3 views
1

Я видел код агрегатора и насколько я понимаю, это следующие опс:Операции и агрегатор

добавить сообщение в группу , если группа может быть выпущены тогда: полной группы и отправить его выход/ответ канал если (истекают-группы) удалить группу и сообщения из хранилища сообщений еще удалить только сообщения

здесь мне нужно некоторое ACID поддержку транзакций, чтобы сделать все, или ничего, но после прочтения документации, я не мог» t найти, как это сделать. Не могли бы вы рассказать мне, если это возможно, и если да, то как я могу это достичь?

заранее спасибо

Regard Гусман

+0

Что вы хотите в рамках транзакции? Все добавления и релиз? Или что-то другое. –

+0

добавление одного сообщения и удаление всех сообщений в группе после выпуска – gllambi

ответ

0

Вы можете сделать въездной (прямой) канал в агрегаторе транзакционного ...

<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
    <tx:attributes> 
     <tx:method name="send" /> 
    </tx:attributes> 
</tx:advice> 

<aop:config> 
    <aop:pointcut id="aggTx" expression="execution(* *.send(..)) &amp;&amp; bean(toAggChannel)" /> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="aggTx" /> 
</aop:config> 

Это будет обрабатывать нормальную доставку и выпуск.

Чтобы сделать частичные группы с частичными транзакциями, используйте MessageGroupStoreReaper и сделайте метод MessageGroupStore.expireMessageGroups() транзакционным способом аналогичным образом.

В настоящее время вы не можете использовать частичные группы в транзакции при использовании group-timeout или group-timeout-expression.

Смежные вопросы