Apache зажигает непрерывный запрос для sqlfieldQuery в переполнении стека

Мы используем 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);

Как получить уведомление для вышеуказанного запроса, используя непрерывный запрос?

Заранее спасибо.

0

Решение

Вы можете использовать простой 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;
}

Я пропустил некоторый шаблонный код. Вы можете найти полностью функциональный пример кода Вот

1

Другие решения

Других решений пока нет …