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

OSCHINA-MIRROR/NuLiing-reliable-message

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

Перевод текста на русский язык:


Введение

RMQ (reliable-message-queue) — это решение для распределённых транзакций, основанное на надёжной передаче сообщений и обеспечивающее конечную согласованность данных.

Если вы считаете, что это полезно, пожалуйста, поставьте звёздочку!

Китайская документация

Примеры использования RMQ:

Архитектура фреймворка

  • RMQ сам по себе не создаёт очереди сообщений, а только перемещает сообщения.
  • Фреймворк RMQ предоставляет функции предварительного отправки сообщений, отправки сообщений, подтверждения сообщений, восстановления сообщений и управления сообщениями, которые в сочетании с надёжными системами обмена сообщениями решают проблему распределённых транзакций и обеспечивают конечную согласованность данных.

Описание модулей Maven

Модуль Описание
rmq-api Предоставляет бизнес-системам интерфейс службы RMQ
rmq-service-api Базовые интерфейсы служб сообщений, инструменты системы и инкапсуляция сущностей
rmq-service Реализация интерфейса службы RMQ, реализация базового интерфейса службы сообщений, реализация интерфейса службы управления сообщениями
rmq-schedule-api Интерфейсы дочерних систем подтверждения сообщений и восстановления сообщений
rmq-schedule Дочерняя система подтверждения сообщений, подтверждающая отправку сообщений вышестоящим бизнес-системам
Дочерняя система восстановления сообщений, повторно отправляющая сообщения нижестоящим бизнес-системам
rmq-cms-api Интерфейс дочерней системы управления сообщениями и инкапсуляция сущности
rmq-cms Дочерняя система управления сообщениями, предоставляющая бэкэнд управления сообщениями
rmq-dal Уровень доступа к базе данных: SQL-запросы

Интеграция бизнес-систем с RMQ

Подробные инструкции см. в разделах «Быстрое начало работы» и «Примеры интеграции».

Зависимости Maven

В файле pom бизнес-системы добавьте последнюю версию зависимости rmq-api:

# Центральный репозиторий: https://search.maven.org/search?q=rmq-api
<dependency>
  <groupId>com.gitee.nuliing</groupId>
  <artifactId>rmq-api</artifactId>
  <version>${последняя стабильная версия}</version>
</dependency>

Внедрение RMQ Dubbo Service в бизнес-код

import org.apache.dubbo.config.annotation.Reference;
import com.cn.rmq.api.service.IRmqService;

@Reference
private IRmqService rmqService;

Написание метода бизнес-логики для отправителя сообщений

public void doBusiness() {
        // Пользовательское имя очереди
        String queue = "test.queue";
        // Содержимое сообщения, если передаётся объект, рекомендуется преобразовать его в строку json
        String messageContent = "......";

        // Вызов RMQ для предварительной отправки сообщения
        String messageId = rmqService.createPreMessage(queue, messageContent);

        // Выполнение бизнес-операции
        ...
        ...

        // Асинхронный вызов RMQ для подтверждения отправки сообщения
        RpcContext.getContext().asyncCall(() -> rmqService.confirmAndSendMessage(messageId));
    }

Написание бизнес-метода для получателя сообщений

public void handleMsg(RmqMessage msg) {
        try {
            String messageContent = msg.getMessageBody();

            // Выполнение бизнес-операции
            ...
            ...

            // Уведомление RMQ об успешном потреблении сообщения
            // Если используется directSendMessage RMQ, уведомление не требуется
            if (StringUtils.isNotBlank(msg.getMessageId())) {
                rmqService.deleteMessageById(msg.getMessageId());
            }
        } catch (Exception e) {
            ...
        }
    }

Другие фреймворки для распределённых транзакций

Фреймворк Описание Статус
cn-rmq Решение для обеспечения конечной согласованности на основе надёжных сообщений Выпущено
cn-ben Схема максимального усилия уведомления Выпущено

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления (2)

все

Участники

все

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

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