Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions hub-router/scripts/execution-report.txt

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions hub-router/scripts/windows/2-collector-grpc-tests.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
@echo off
setlocal

REM Локальный запуск тестов Hub Router для проверки сервиса Collector

set "JAR_PATH=%~dp0..\hub-router.jar"

if "%1"=="info" (
echo.
java -jar "%JAR_PATH%" info
echo.
pause
exit /b
)

echo "Запуск Hub Router (режим: COLLECTION, GRPC)"
echo.

java -jar "%JAR_PATH%" ^
--hub-router.execution.mode=COLLECTION ^
--hub-router.execution.collector.mode=grpc ^
--hub-router.execution.immediate-logging.enabled=false ^
--hub-router.execution.output.info-enabled=true ^
--hub-router.execution.output.trace-enabled=true ^
--hub-router.execution.output.console=true ^
--hub-router.skip-summary-on-startup=false

echo.
echo Тест завершён. Проверьте результаты в консоли выше.
pause
36 changes: 36 additions & 0 deletions hub-router/start-hub-router.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
@echo off
setlocal

if "%~1"=="" (
echo ❌ Ошибка: Не передан аргумент! Укажите один из: 1-collector-json, 2-collector-grpc, 3-aggregator, 4-analyzer
exit /b 1
)

set MODE=%~1

if "%MODE%"=="1-collector-json" (
echo 🚀 Запуск hub-router в режиме HTTP Collector...
java -jar hub-router.jar --hub-router.execution.collector.mode=http --hub-router.execution.collector.port=8080
exit /b
)

if "%MODE%"=="2-collector-grpc" (
echo 🚀 Запуск hub-router в режиме gRPC Collector...
java -jar hub-router.jar
exit /b
)

if "%MODE%"=="3-aggregator" (
echo 🚀 Запуск hub-router в режиме Aggregator...
java -jar hub-router.jar --hub-router.execution.mode=AGGREGATION
exit /b
)

if "%MODE%"=="4-analyzer" (
echo 🚀 Запуск hub-router в режиме Analyzer...
java -jar hub-router.jar --hub-router.execution.mode=ANALYZE
exit /b
)

echo ❌ Ошибка: Неверный аргумент '%MODE%'. Доступные варианты: 1-collector-json, 2-collector-grpc, 3-aggregator, 4-analyzer
exit /b 1
43 changes: 39 additions & 4 deletions telemetry/collector/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,61 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>

<dependency>
<groupId>ru.yandex.practicum</groupId>
<artifactId>proto-schemas</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>

<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>${protobuf.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<excludes>
<exclude>
<source>21</source>
<target>21</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package ru.yandex.practicum.controller;

import com.google.protobuf.Empty;
import io.grpc.Status;
import io.grpc.StatusRuntimeException;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.devh.boot.grpc.server.service.GrpcService;
import ru.yandex.practicum.grpc.telemetry.collector.CollectorControllerGrpc;
import ru.yandex.practicum.grpc.telemetry.event.HubEventProto;
import ru.yandex.practicum.grpc.telemetry.event.SensorEventProto;
import ru.yandex.practicum.mapper.*;
import ru.yandex.practicum.service.EventService;

@Slf4j
@GrpcService
@RequiredArgsConstructor
public class CollectorGrpcController extends CollectorControllerGrpc.CollectorControllerImplBase {

private final EventService eventService;
private final ProtoToAvroSensorMapper sensorMapper;
private final ProtoToAvroHubMapper hubMapper;

@Override
public void collectSensorEvent(SensorEventProto request, StreamObserver<Empty> responseObserver) {
log.info("gRPC: получен SensorEventProto: {}", request);
try {
var avro = sensorMapper.toAvro(request);
eventService.sendSensorEvent(avro);
responseObserver.onNext(Empty.getDefaultInstance());
responseObserver.onCompleted();
} catch (Exception e) {
handleError(responseObserver, e, "collectSensorEvent");
}
}

@Override
public void collectHubEvent(HubEventProto request, StreamObserver<Empty> responseObserver) {
log.info("gRPC: получен HubEventProto: {}", request);
try {
var avro = hubMapper.toAvro(request);
eventService.sendHubEvent(avro);
responseObserver.onNext(Empty.getDefaultInstance());
responseObserver.onCompleted();
} catch (Exception e) {
handleError(responseObserver, e, "collectHubEvent");
}
}

private void handleError(StreamObserver<?> responseObserver, Exception e, String context) {
log.error("Ошибка в {}: {}", context, e.getMessage(), e);
responseObserver.onError(new StatusRuntimeException(
Status.INTERNAL.withDescription(e.getLocalizedMessage()).withCause(e)
));
}
}

This file was deleted.

This file was deleted.

Loading