Мы используем Apache Ignite SqlFieldQuery
, Поддерживает ли непрерывный запрос SqlFieldQuery
? Ищу какой-то пример, связанный с этим.
Запрос выглядит так:
Cache<int32_t, std::string> cache =
ignite.GetOrCreateCache<int32_t, std::string>(CACHE_NAME);
std::string sql("INSERT INTO \"DG\".TestList (empid,name) values(11, 'name')");
SqlFieldsQuery orgQry(sql);
cache.Query(orgQry);
Как получить уведомление для вышеуказанного запроса, используя непрерывный запрос?
Заранее спасибо.
Вы можете использовать простой 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;
}
Я пропустил некоторый шаблонный код. Вы можете найти полностью функциональный пример кода Вот
Других решений пока нет …