1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bryan31-litx

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Litx

Litx — это облегчённый распределённый фреймворк для транзакций, основанный на компенсации. В настоящее время он поддерживает только Dubbo, но в будущем планируется поддержка других RPC-вызовов, таких как HTTP и другие.

  • Не вмешивается в логику кода;
  • Легко интегрируется с Spring (внутренняя реализация основана на интеграции со Spring Transaction Manager, который запускается с помощью аннотации @transactional);
  • Предоставляет автоматический механизм отката и компенсации;
  • При возникновении проблем с откатом предоставляет интерфейс хука для расширения, что позволяет обрабатывать данные самостоятельно при неудачном откате.

Быстрый старт

Вы также можете обратиться к тестовым примерам litx-test, которые демонстрируют тестирование в среде Dubbo.

Для быстрой настройки вы можете следовать следующему коду:

  1. Определите интерфейсы для отката. Предположим, ваш метод Dubbo называется submitOrder, тогда интерфейс отката будет называться rollbackSubmitOrder. Параметры запроса должны соответствовать типу возврата submitOrder. Добавьте аннотацию Spring @Transactional и аннотацию @Compensable к вашему интерфейсу.
public interface DemoService {
	
	@Compensable
    	String test1();

	@Compensable
	String test2();
	
	void rollbackTest1(String str);
	
	void rollbackTest2(String str);
}
  1. Добавьте следующее определение в конфигурацию Spring:
<bean id="litxDubboDefinationScanner" class="com.thebeastshop.litx.spring.LitxDubboDefinationScanner"/>
  1. Замените стандартный менеджер транзакций Spring на следующий:
<bean name="transactionManager" class="com.thebeastshop.litx.transaction.LitTransactionManager">
	<property name="dataSource" ref="dataSource"/>
</bean>

Если вы хотите обработать данные об исключениях отката, создайте собственный класс, реализующий интерфейс RollbackInvokeHook, и зарегистрируйте его в контейнере Spring. Litx автоматически обнаружит его при запуске.

Описание тестового примера

Тестовый проект предоставляет dubbo-provider, который необходимо сначала запустить. Используйте основной метод Runner для запуска (необходимо повторно настроить конфигурацию источника данных). Затем запустите dubbo-consumer.

Потребительские тесты демонстрируют пример использования: потребитель сначала вызывает test1 провайдера, а затем вызывает test2. В коде test2 намеренно генерируется ошибка. test1 откатывается, но при этом также возникает ошибка, которая перехватывается пользовательским хуком потребителя.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Litx — это облегчённый распределённый фреймворк для транзакций, основанный на компенсации. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bryan31-litx.git
git@api.gitlife.ru:oschina-mirror/bryan31-litx.git
oschina-mirror
bryan31-litx
bryan31-litx
master