R3 Framework — это распределённая система обработки, основанная на Spring, предназначенная для работы в реальном времени.
public interface SayHelloService {
@Out(SayHelloOutHandler.class)
@In(SayHelloInHandler.class)
List<String> sayHello(List<String> names);
}
public class SayHelloOutHandler extends OutHandler {
@Override
public List<Object[]> shard(Object[] parameters, int shardCount) throws Throwable {
List<Object[]> result = new ArrayList<>();
List<String> param = (List<String>) parameters[0];
int perSize = param.size() / shardCount;
for(int i=0;i<shardCount;i++){
result.add(new Object[]{param.subList(i*perSize,(i!=shardCount-1?(i+1)*perSize:param.size()))});
}
return result;
}
}
public class SayHelloInHandler extends InHandler {
@Override
public Object join(Object[] results) throws Throwable {
List<String> list = new ArrayList<>();
for (Object object : results){
list.addAll((List<String>)object);
}
return list;
}
}
public class SayHelloServiceImpl implements SayHelloService {
@Override
public List<String> sayHello(List<String> names) {
List<String> newNames = new ArrayList<>();
for (String name : names) {
String newName = "hello " + name;
newNames.add(newName);
}
return newNames;
}
}
<r3:application name="worker-1" host="AUTO" port="20080"></r3:application>
<r3:registry address="localhost:2181" namespace="r3"></r3:registry>
<r3:worker id="sayHelloWorker" ref="sayHelloServiceImpl" interface="r3.example.api.SayHelloService"></r3:worker>
<bean id="sayHelloServiceImpl" class="r3.example.worker.SayHelloServiceImpl" scope="prototype"></bean>
<r3:application name="leader-one" ></r3:application>
<r3:registry address="localhost:2181" namespace="r3"></r3:registry>
<r3:leader id="sayHelloServiceImpl" interface="r3.example.api.SayHelloService"></r3:leader>
Аннотация класса, применяемая к интерфейсу API, используется для разделения параметров.
Атрибут | Описание |
---|---|
value | Пользовательский класс разделения параметров, который должен наследоваться от r3.flow.OutHandler |
Аннотация класса, используемая для объединения параметров в интерфейсе API.
Атрибут | Описание |
---|---|
value | Пользовательский класс объединения параметров, который должен быть унаследован от r3.flow.InHandler |
<r3:application name="worker-1" host="localhost" port="20080">
Атрибут | Описание |
---|---|
name | Имя приложения, обязательное поле, приложения с одинаковыми именами принадлежат одной группе, и только один из них будет использоваться в группе. |
host | Адрес прослушивания, по умолчанию «AUTO», если он установлен как «AUTO», он автоматически использует IP-адрес локального хоста. В случае нескольких сетевых карт вы можете вручную установить IP-адрес. |
port | Порт прослушивания, по умолчанию 20080. |
<r3:registry address="localhost:2181" namespace="r3">
Атрибут | Описание |
---|---|
address | Адрес центра регистрации zookeeper, по умолчанию localhost:2181. |
namespace | Пространство имён приложения для регистрации, корневой узел zookeeper по умолчанию r3. |
sessionTimeout | Время ожидания сеанса, в миллисекундах, по умолчанию 3000. |
connectionTimeout | Время ожидания соединения, в миллисекундах, по умолчанию 3000. |
interval | Интервал повторных попыток регистрации службы, в миллисекундах, по умолчанию 30 000. |
<r3:worker id="sayHelloWorker" ref="SayHelloServiceImpl" interface="r3.example.api.SayHelloService">
Атрибут | Описание |
---|---|
id | Идентификатор spring bean. |
ref | Ссылка на spring bean. |
interface | Реализованный интерфейс класса. |
<r3:leader id="sayHelloServiceImpl" interface="r3.example.api.SayHelloService">
Атрибут | Описание |
---|---|
id | Идентификатор spring bean. |
interface | Интерфейс прокси-класса. |
loadbalance | Стратегия балансировки нагрузки, по умолчанию random, другие стратегии пока не поддерживаются. |
Названия версий основаны на названиях планет.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )