gpt4 book ai didi

spring-boot - 使用 RSocket-Java for Spring Rsocket Server 的 rsocket 路由元数据

转载 作者:行者123 更新时间:2023-12-04 00:55:35 30 4
gpt4 key购买 nike

如何设置路由元数据(在服务器使用 Spring Boot Rsocket 时仅使用 RSocket-Java 的有效负载。Flux<Payload> s = connection.flatMapMany(requester -> requester.requestStream(DefaultPayload.create("Some Message")))服务器正在使用@MessageMapping("/route")

最佳答案

交互类型
SpringBoot 上的 RSocket 交互类型使用 @MessageMapping根据注释方法的签名决定(更多信息在 spring docs 中)
让我们假设它有签名:

@MessageMapping("/route")
Flux<String> getStreamOfStrings(String message) {...}
基于 spring docs 交互类型的基数表是请求流。
RSocket客户端
RSocket java客户端需要为元数据指定mime-type:
RSocket rsocketClient = RSocketConnector.create()
//metadata header needs to be specified
.metadataMimeType(WellKnownMimeType.MESSAGE_RSOCKET_COMPOSITE_METADATA.getString())
// value of spring.rsocket.server.port eg 7000
.connect(TcpClientTransport.create(7000))
.block();
数据
数据将是简单的字符串:
ByteBuf data = ByteBufAllocator.DEFAULT.buffer().writeBytes("request msg".getBytes());
元数据
RSocket 中的路由定义为 metadata extension并且需要与数据一起发送以指定路由。这是如何创建它的示例(请参阅包 io.rsocket.metadata 中的其他类)
CompositeByteBuf metadata = ByteBufAllocator.DEFAULT.compositeBuffer();
RoutingMetadata routingMetadata = TaggingMetadataCodec.createRoutingMetadata(ByteBufAllocator.DEFAULT, List.of("/route"));
CompositeMetadataCodec.encodeAndAddMetadata(metadata,
ByteBufAllocator.DEFAULT,
WellKnownMimeType.MESSAGE_RSOCKET_ROUTING,
routingMetadata.getContent());
请求流请求
创建数据和元数据,以便您可以执行 requestSteam使用:
rsocketClient.requestStream(DefaultPayload.create(data, metadata))
.map(Payload::getDataUtf8)
.toIterable()
.forEach(System.out::println);

关于spring-boot - 使用 RSocket-Java for Spring Rsocket Server 的 rsocket 路由元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62742430/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com