使用Hazelcast在Python和Java之间共享集合
我有两个程序,一个是Java,另一个是Python。 在Java上,我需要在Hazelcast IMap中存储一个HashMap,然后在Python上将其作为一个字典,这可能吗使用Hazelcast在Python和Java之间共享集合,java,python,hazelcast,Java,Python,Hazelcast,我有两个程序,一个是Java,另一个是Python。 在Java上,我需要在Hazelcast IMap中存储一个HashMap,然后在Python上将其作为一个字典,这可能吗 一切皆有可能 也许你想要的已经实现了 您可能需要在两个程序之间交换自己的消息 你可以做AMQP,HTTP,XMPP。。。发送您的信息 您的消息可以是任何格式,如XML-RPC、JSON-RPC、JSON、您自己的格式 然后。。。 在Python方面,您可以从5和dict转换为格式 在Java方面,您可以从5和一些Java
如果您想使用Hazelcast,我建议使用已经支持两种语言(如ApacheAvro或Protobuffers)的序列化。这样,您可以在两侧序列化和反序列化
在Hazelcast中,您需要使用StreamSerializer接口,并将序列化转发到protobuf等生成的类。注册序列化程序就可以了。Hazelcast已经有了一个很好的Python客户端库,可以用于此目的。可从主页下载资源 代码示例位于github中 例如:
这是可能的,Noctarius已经分享了这些例子。唯一需要注意的是在两侧使用IdentifiedDataSerializable序列化。是的,映射和结构是相同的数据结构。然而,python字典支持混合类型的值。java的映射没有-除非用object定义。@dram,好的。Hazelcast不支持这种类型的共享?只有Hazelcast的收藏可以共享?
import hazelcast
config = hazelcast.ClientConfig()
# Hazelcast.Address is the hostname or IP address, e.g. 'localhost:5701'
config.network_config.addresses.append('Hazelcast.Address')
# blocking map
my_map = client.get_map("map-name").blocking()
or
my_async_map = client.get_map("map-name")
please check the examples in Github