Ignite c ++ client pour l’intégration de cassandra

Je développe une application pour la communication de données en ce sens que je souhaite communiquer avec Cassandra via Ignite C ++. Quand j’essaie de mettre des données à Cassandra, cela fonctionne très bien. mais je ne peux pas obtenir les données du même. voici mon code.

test.h namespace ignite { namespace examples { struct Test { Test() { // No-op. } Test(const std::ssortingng& assetid, const std::ssortingng& asset_desc, const std::ssortingng& groupid) : assetid (assetid), asset_desc (asset_desc), groupid (groupid) { // No-op. } std::ssortingng ToSsortingng() { std::ossortingngstream oss; oss << "Address [street=" << assetid << ", zip=" << asset_desc<< "]"; return oss.str(); } std::string assetid; std::string asset_desc; std::string groupid; }; } } 

cassandra-config.xml

         <!-- Persistence settings for 'cache2'   -->                                 <!-- Configuring persistence for "cache2" cache            -->         <!---->     127.0.0.1:47500..47509         

connection-settings.xml

         127.0.0.1    <!--   -->      

persistance-settings.xml

          >      

principale

 int main() { IgniteConfiguration cfg; cfg.springCfgPath = "apache-ignite-fabric-2.0.0-bin/cassandra-config.xml"; Ignite grid = Ignition::Start(cfg); Cache cache = grid.GetCache("cache1"); Test test; test.assetid = "456dsfds"; Test obj; obj.asset_desc = "wdsdfsf"; obj.groupid = "sddvwfsf"; cache.Put (test, obj,err); Test get = cache.Get (test, err); cout << "Error Found" << err.GetText () << endl; cout << "Ignite \t" << "\t" << get.asset_desc << "\t" << get.groupid; } 

Test.jar

 package com.test; import java.io.Serializable; import org.apache.ignite.binary.BinaryObjectException; import org.apache.ignite.binary.BinaryReader; import org.apache.ignite.binary.BinaryWriter; import org.apache.ignite.binary.Binarylizable; import org.apache.ignite.cache.query.annotations.QuerySqlField; public class Test implements Binarylizable ,Serializable{ /** * */ private static final long serialVersionUID = 1L; Ssortingng assetid; @QuerySqlField(index = true) Ssortingng asset_desc; Ssortingng groupid; public Ssortingng getGroupId() { return groupid; } public void setGroupId(Ssortingng groupId) { this.groupid = groupId; } public Ssortingng getAssetid() { return assetid; } public void setAssetid(Ssortingng assetid) { this.assetid = assetid; } public Ssortingng getAsset_desc() { return asset_desc; } public void setAsset_desc(Ssortingng asset_desc) { this.asset_desc = asset_desc; } @Override public void readBinary(BinaryReader reader) throws BinaryObjectException { assetid = reader.readSsortingng("assetid"); asset_desc = reader.readSsortingng("asset_desc"); groupid = reader.readSsortingng("groupid"); } @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException { writer.writeSsortingng("assetid", assetid); writer.writeSsortingng("asset_desc", asset_desc); writer.writeSsortingng("groupid", groupid); } } 

ça montre l’erreur comme ça

Instantané de topologie [ver = 1, serveurs = 1, clients = 0, CPU = 1, tas = 0,97 Go] [16: 14: 20 834] [ERREUR] [sys- # 29% null%] [CassandraCacheStore] Échec d’exécution de Cassandra Instruction CQL: sélectionnez “assetid”, “asset_desc”, “groupid” dans “sam”. “User_permission” où “assetid” =? et “asset_desc” =? et “groupid” = ?; Classe org.apache.ignite.IgniteException: Echec de l’exécution de l’instruction Cassandra CQL: sélectionnez “assetid”, “asset_desc”, “groupid” dans “sam”. “user_permission” où “assetid” =? et “asset_desc” =? et “groupid” = ?;

    Je suppose que c’est parce que vous utilisez ceci:

      

    L’implémentation actuelle ne prend en charge que la sérialisation BLOB pour les objects binarys. Il existe un ticket pour cela: https://issues.apache.org/jira/browse/IGNITE-5270

    Dans la mesure où vous utilisez C ++ pour travailler avec Ignite, vous utilisez également BinaryObjects. L’implémentation actuelle du magasin Cassandra ne prend pas en charge les objects binarys en tant que clés et valeurs de cache.

    De ce fait, à partir du client Ignite C ++, vous ne pouvez pas utiliser de table Cassandra avec 1 clé de partition, 3 clés de cluster. Vous ne pouvez le faire qu’à partir du client java configurant la stratégie de persistance de POJO et évitant les objects binarys.

    Il existe également un ticket dans Ignite JIRA pour implémenter la prise en charge de BinaryObjects dans le magasin Cassandra: https://issues.apache.org/jira/browse/IGNITE-5270