2017-12-13 7 views
-5

私は2つのプログラムを用意しています。 Javaでは、Hazelcast IMapをHashMapに格納し、それをPythonで辞書として取得する必要がありますか?Hazelcastを使用してPythonとJavaの間でコレクションを共有する

+0

はい、マップと構造は同じデータ構造です。 Hovever、Python辞書は値の型の混合をサポートしています。あなたがオブジェクトで定義しない限り、javaのマップはありません。 – dram

+0

@dram、ok so。ヘーゼルキャストはこのタイプのシャーリングをサポートしていませんか?ちょうどHazelcastのコレクションは共有できますか? – HHead26

答えて

0
  1. すべてが可能です
  2. たぶん、あなたはすでに実装されています探しているもの。
  3. 2つのプログラム間で独自のメッセージを交換する必要があります。
  4. あなたはAMQPを行うことができ、HTTP、XMPP ...
  5. の上にメッセージを送信するためにあなたのメッセージは、このようなXML-RPCなどのフォーマット、JSON-RPC、JSON、独自のフォーマット、...
  6. 可能性があり次に...
    1. Python側では、5からdictにフォーマット変換します。 Java側で
    2. 、あなたは5からあなたの形式に/から変換すると、いくつかのJavaコンテナ
  7. 幸運。
0

Hazelcastを使用する場合は、Apache AvroやProtobuffersなどの言語をサポートしているシリアル化を使用することをおすすめします。そうすれば、両面でシリアライズしてデシリアライズすることができます。

Hazelcastでは、StreamSerializerインターフェイスを使用して、生成されたクラスにシリアル化を転送する必要があります。 protobuf。シリアライザを登録すれば、良い結果が得られます。

0

Hazelcastには、すでにこの目的に使用できる優れたPythonクライアントライブラリがあります。リソースはhttps://hazelcast.org/clients/python/

コードサンプルは、例えばのためのGitHub https://github.com/hazelcast/hazelcast-python-client/tree/master/examples にあるホームページからダウンロードすることができます:それは可能です

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 
0

、Noctariusはすでに例を共有しました。注意を払うのは、両側でIdentifiedDataSerializableシリアル化を使用することだけです。

関連する問題