Запрос Mode
Нулевая система поддерживает пять режимов запроса, как показано ниже (пожалуйста, игнорируйте название режима, оно используется только для различения).
Этот режим используется для синхронного режима запроса-ответа в vert.x. Вы можете определить свой метод следующим образом:
@GET
@Path("/sync/string")
public String syncRequest(
@QueryParam("email") final String email
) {
final String response = "Тестирование завершено";
return response;
}
Правило:
void
;@Address
для этого метода.Рабочий процесс
Этот режим используется только для запросов в vert.x, вы можете определить свой метод следующим образом:
@GET
@Path("/block/{name}")
public void blockRequest(
@PathParam("name") final String name) {
System.out.println("блокирующий запрос");
}
Правило
void
;Рабочий процесс
Этот режим похож на режим 2, но данные будут отправляться в шину событий для выполнения асинхронных заданий (будет удалён).
Отправитель
@POST
@Path("/one-way/user")
@Address("ZERO://USER")
public String sendNotify(
@BodyParam final User user) {
final String response = Jackson.serialize(user);
return response;
}
Потребитель
@Address("ZERO://USER")
public void reply(final Envelop message) {
final User user = message.data(User.class);
// Выполнить действия
}
Правило
@EndPoint
и @Queue
должны быть аннотированы с помощью @Address
, и они должны совпадать между отправителем и потребителем.@EndPoint
не должен быть void
.public void xxx(Envelop)
.Рабочий процесс
Это асинхронный режим запроса-ответа между потребителем и отправителем на шине событий.
Отправитель
@POST
@Path("/async/user")
@Address("ZERO://ROLE")
public String sendAsync(
@BodyParam final User user) {
final String response = Jackson.serialize(user);
return response;
}
Потребитель
@Address("ZERO://USER")
public Envelop reply(final Envelop message) {
final User user = message.data(User.class);
final WebException error = new TestRequestException(getClass(),
"Lang", "Detail");
return Envelop.failure(error);
}
Правило
@EndPoint
и @Queue
должны быть аннотированы с помощью @Address
, и они должны совпадать между отправителем и потребителем.@EndPoint
не должен быть void
.public Envelop xxx(Envelop)
.Рабочий процесс
Этот режим поддерживается для использования некоторых компонентов vert.x в сервисном слое системы, таких как MongoClient, SQLClient и т. д.
Отправитель (такой же, как режим 4)
@Path("/event")
@POST
@Address("ZERO://EVENT")
public JsonObject sayEvent(
@BodyParam final JsonObject data) {
return data;
}
Потребитель
@Mongo
private transient MongoClient client;
@Address("ZERO://ROLE")
public void async(final Message<Envelop> message) {
final User user = Envelop.data(message, User.class);
final JsonObject userData = new JsonObject(Jackson.serialize(user));
this.client.save("DB_USER", userData, res -> {
if (res.succeeded()) {
message.reply(Envelop.success("Hello World"));
} else {
res.cause().printStackTrace();
}
});
}
Правило
Методы @EndPoint
и @Queue
должны соответствовать определённым правилам. Должно быть аннотировано с помощью @Address
, и они должны быть одинаковыми между отправителем и получателем.
Тип возвращаемого значения метода в @EndPoint
не должен быть void
.
Необходимо определить сигнатуру метода получателя как public void xxx(Message<Envelop>)
.
Не забудьте вызвать reply(Envelop)
в обратном вызове для Message<Envelop>
.
Рабочий процесс
Mode 5 (Моуд файф)
Все вышеперечисленные режимы запросов могут описывать разное использование, но мы рекомендуем использовать Mode 4 и Mode 5.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )