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

时间:2018-07-06 21:44:45

标签: java xml hazelcast

我有一个用户定义的服务,该服务是根据Hazelcast文档的第24章提供的,但是他们从未提及使客户端能够使用Hazelcast Client Instance的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">

1 个答案:

答案 0 :(得分:0)

TLDR; 目前尚无法从客户端访问用户定义的类。该区域需要做更多工作才能使此过程变得用户友好。

这是在此处回答的补充: How to write client proxy for SPI and what the difference between client and server proxies?

如何通过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