Перевод текста на русский язык:
RMQ (reliable-message-queue) — это решение для распределённых транзакций, основанное на надёжной передаче сообщений и обеспечивающее конечную согласованность данных.
Если вы считаете, что это полезно, пожалуйста, поставьте звёздочку!
Модуль | Описание |
---|---|
rmq-api | Предоставляет бизнес-системам интерфейс службы RMQ |
rmq-service-api | Базовые интерфейсы служб сообщений, инструменты системы и инкапсуляция сущностей |
rmq-service | Реализация интерфейса службы RMQ, реализация базового интерфейса службы сообщений, реализация интерфейса службы управления сообщениями |
rmq-schedule-api | Интерфейсы дочерних систем подтверждения сообщений и восстановления сообщений |
rmq-schedule | Дочерняя система подтверждения сообщений, подтверждающая отправку сообщений вышестоящим бизнес-системам Дочерняя система восстановления сообщений, повторно отправляющая сообщения нижестоящим бизнес-системам |
rmq-cms-api | Интерфейс дочерней системы управления сообщениями и инкапсуляция сущности |
rmq-cms | Дочерняя система управления сообщениями, предоставляющая бэкэнд управления сообщениями |
rmq-dal | Уровень доступа к базе данных: SQL-запросы |
Подробные инструкции см. в разделах «Быстрое начало работы» и «Примеры интеграции».
В файле pom бизнес-системы добавьте последнюю версию зависимости rmq-api:
# Центральный репозиторий: https://search.maven.org/search?q=rmq-api
<dependency>
<groupId>com.gitee.nuliing</groupId>
<artifactId>rmq-api</artifactId>
<version>${последняя стабильная версия}</version>
</dependency>
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 )