配置 Hazelcast Java 客户端以使用用户定义的服务需要什么?



我有一个用户定义的服务,我是在Hazelcast文档的第24章之后创建的,但他们从未提到使客户端能够使用Hazelcast客户端实例的getDistributedObject方法访问分布式对象所必需的内容。我的 xml 配置只是添加了序列化的默认(非常空白(xml。这是使用hazelcast节点配置的服务配置:

<services enable-defaults="true">
<service enabled="true">
<name>MapManagerService</name>
<class-name>com.ctl.hzl.service.MapManagerService</class-name>
</service>
</services>

我正在使用Hazelcast-client-3.10.1和Java 1.8。除了 xsi 文档之外,我一直找不到任何格式指南,这很有用,但没有真正告诉我需要包含哪些内容来支持我的服务。我在一次尝试中收到一条错误消息,其中提到了某种服务工厂,我认为这一定是我需要的,但我无法找出它需要什么。这是架构位置(如果有帮助的话(。提前谢谢。

xsi:schemaLocation="http://www.hazelcast.com/schema/client-config
http://www.hazelcast.com/schema/config/hazelcast-client-config-3.10.xsd">

TLDR; 目前无法从客户端授予对用户定义类的访问权限。这个领域需要更多的工作来使这个过程用户友好。

这是在这里回答的补充: 如何为 SPI 编写客户端代理,客户端和服务器代理有什么区别?

如何通过 xml 配置服务:

<hazelcast-client>
<proxy-factories>
<proxy-factory class-name="com.hazelcast.examples.ProxyXYZ1" service="sampleService1"/>
<proxy-factory class-name="com.hazelcast.examples.ProxyXYZ2" service="sampleService1"/>
<proxy-factory class-name="com.hazelcast.examples.ProxyXYZ3" service="sampleService3"/>
</proxy-factories>
</hazelcast-client>

请求和响应(称为编解码器(类是通过称为 hazelcast 客户端协议的不同项目生成的。客户端协议项目中的 Readme.md 应该可以帮助您创建自己的协议。 https://github.com/hazelcast/hazelcast-client-protocol

另一个重要的部分是在服务器上实现和注册消息任务。消息任务处理来自客户端的请求。不幸的是,这部分不够完善,无法使其对SPI用户友好。示例消息任务如下所示: https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/map/MapPutMessageTask.java

最新更新