WebFlux + RSocket + Весна

Может кто-нибудь подскажет или даст готовый пример CRUD с использованием WebFlux, RScoket и Spring (или SpringBoot)?

Я изучил документацию RSocket, WebFlux, также написал свои простые примеры, но я хотел бы увидеть настоящее приложение CRUD, использующее базовые методы с использованием < strong> RSocket.

Я буду очень благодарен. Спасибо.


person Kirill Sereda    schedule 25.02.2020    source источник


Ответы (1)


Я поддерживал образец проекта Spring / RSocket с 4 основными режимами взаимодействия RSocket.

Если вам нужен только регистр запроса / ответа для простых операций CRUD, проверьте режим запрос и ответ и выберите транспортный протокол, TCP или WebSocket.

Чтобы реализовать операции CRUD, просто определите для них 4 разных маршрута, например, определите RESTful API с помощью URI, у вас должен быть хороший план именования, но в RSocket нет HTTP-методов, которые помогли бы вам различать одни и те же маршруты.

Например, на стороне сервера мы можем объявить @Controller для обработки таких сообщений.

@Controller
class ProfileController {

    @MessageMapping("fetch.profile.{name}")
    public Mono<Profile> greet(@DestinationVariable String name) {
    }

    @MessageMapping("create.profile")
    public Mono<Message> greet(@Payload CreateProfileRequest p) {
    }

    @MessageMapping("update.profile.{name}")
    public Mono<Message> greet(@DestinationVariable String name, @Payload UpdateProfileRequest p) {
    }

    @MessageMapping("delete.profile.{name}")
    public Mono<Message> greet(@DestinationVariable String name) {
    }
}

На стороне клиента, если это приложение Spring Boot, вы можете использовать RSocket RSocketRequester для такого взаимодействия со стороной сервера.

//fetch a profile by name
requester.route("fetch.profile.hantsy").retrieveMono()

//create a new profile
requester.data(new CreateProfileRequest(...)).route("create.profile").retrieveMono()

//update the existing profile
requester.data(new UpdateProfileRequest(...)).route("update.profile.hantsy").retrieveMono()

//delete a profile
requester.route("delete.profile.hantsy").retrieveMono()

Конечно, если вы просто создаете службу, предоставляемую протоколом rsocket, клиентом может быть проект rsocket-js или другие языки и фреймворки, такие как Angular, React или Android и т. Д.

Обновление: я добавил образец сырости в свой Примеры кодов rsocket, и я опубликовал сообщение на Medium.

person Hantsy    schedule 01.03.2020