簡易ContinuousQuery
を使用できます。このようなもの:
// Assuming your key type is int32_t
class Listener : public event::CacheEntryEventListener<int32_t, TestList>
{
public:
virtual void OnEvent(const CacheEntryEvent<int32_t, TestList>* evts, uint32_t num)
{
// Simply printing events here. You can put your processing code here.
for (uint32_t i = 0; i < num; ++i)
{
std::cout << "Queried entry [key=" << evts[i].GetKey()
<< ", val=" << (evts[i].HasValue() ? evts[i].GetValue() : "<none>")
<< ']' << std::endl;
}
}
};
int main()
{
Ignite ignite = Ignition::Start(cfg);
Cache<int32_t, TestList> cache =
ignite.GetOrCreateCache<int32_t, TestList>(CACHE_NAME);
// Declaring listener.
Listener<int32_t, TestList> listener;
// Declaring continuous query.
continuous::ContinuousQuery<int32_t, TestList> qry(MakeReference(listener));
continuous::ContinuousQueryHandle<int32_t, TestList> handle =
cache.QueryContinuous(qry);
std::string sql("INSERT INTO \"DG\".TestList (empid,name) values(11, 'name')");
SqlFieldsQuery orgQry(sql);
cache.Query(orgQry);
// Waiting here to get notifications.
std::cin.get();
return 0;
}
私はいくつかのボイラープレートコードをスキップしました。完全に機能するコード例が見つかりますhere
継続的なクエリ実装では、クライアントのローカルリスナーへのイベントの配信が一度だけ保証されます。これらの3つの方法で通知を得ることができます。 https://apacheignite-cpp.readme.io/docs/continuous-queries#section-local-listener 例はこの場所にあります。 https://github.com/apache/ignite/blob/master/modules/platforms/cpp/examples/continuous-query-example/src/continuous_query_example.cpp この例ではSqlFieldQueryが見つかりません。https:// apacheignite- cpp.readme.io/docs/sql-queries#section-field-queries。 – nevihs