首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSocket元数据-自定义对象

RSocket元数据-自定义对象
EN

Stack Overflow用户
提问于 2021-03-06 10:48:03
回答 1查看 135关注 0票数 1

我正在使用rsocket-java。

有没有办法通过元数据发送自定义对象?

我在他们的文档中看到了这个代码示例。

代码语言:javascript
复制
RSocketStrategies strategies = RSocketStrategies.builder()
    .metadataExtractorRegistry(registry -> {
        registry.metadataToExtract(fooMimeType, Foo.class, "foo");
        // ...
    })
    .build();
 return strategies;

我也尝试过类似的方法。

代码语言:javascript
复制
@Bean
public RSocketStrategies strategies(){

    RSocketStrategies strategies = RSocketStrategies.builder()
        .metadataExtractorRegistry(registry -> {
            registry.metadataToExtract(someMimeType, Something.class, "something");
            // ...
        })
        .build();
     return strategies;

}

但是得到了这个例外。

Caused by: java.lang.IllegalArgumentException: No decoder for messaging/x.something and com.demo.Something

我应该为每种对象类型创建自己的解码器吗?

请不要显示字符串示例。问题是如何传递自定义对象。

EN

回答 1

Stack Overflow用户

发布于 2021-03-06 21:15:33

您应该在某个地方注册此bean,请参见https://docs.spring.io/spring-integration/docs/current/reference/html/rsocket.html

代码语言:javascript
复制
@Bean
public RSocketStrategies rsocketStrategies() {
    return RSocketStrategies.builder()
        .decoder(StringDecoder.textPlainOnly())
        .encoder(CharSequenceEncoder.allMimeTypes())
        .dataBufferFactory(new DefaultDataBufferFactory(true))
        .build();
}

@Bean
public ServerRSocketConnector serverRSocketConnector() {
    ServerRSocketConnector serverRSocketConnector = new ServerRSocketConnector("localhost", 0);
    serverRSocketConnector.setRSocketStrategies(rsocketStrategies());
    serverRSocketConnector.setMetadataMimeType(new MimeType("message", "x.rsocket.routing.v0"));
    serverRSocketConnector.setServerConfigurer((server) -> server.payloadDecoder(PayloadDecoder.ZERO_COPY));
    serverRSocketConnector.setClientRSocketKeyStrategy((headers, data) -> ""
                                    + headers.get(DestinationPatternsMessageCondition.LOOKUP_DESTINATION_HEADER));
    return serverRSocketConnector;
}

但是,仅仅使用您提供的最小代码片段是不可能回答的。你能在你的例子中提供一个可运行的例子或更多的上下文吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66501888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档