KubeMQ
Client SDKsC++Reference

RPC

Commands and queries (request-reply) methods -- KubeMQ C++ SDK reference.

Synchronous request-reply patterns. Commands carry no response body (success/failure only). Queries return data in the response and support server-side caching.

Commands

SendCommand

[[nodiscard]] StatusOr<CommandResponse> SendCommand(const Command& command);

Send a command and block until a handler responds or the timeout expires.

SubscribeToCommands

[[nodiscard]] StatusOr<std::unique_ptr<Subscription>> SubscribeToCommands(
    const std::string& channel, const std::string& group,
    std::function<void(const CommandReceive&)> on_command,
    std::function<void(const Status&)> on_error);

Subscribe to incoming commands. Use client->SendCommandResponse(reply) to respond.

SendCommandResponse

[[nodiscard]] Status SendCommandResponse(const CommandReply& reply);

Send a response to a received command.

Command Type

Built via Command::Builder.

MethodTypeRequiredDescription
SetChannel(s)stringYesTarget channel
SetBody(s)stringNoCommand body
SetMetadata(s)stringNoString metadata
SetTimeout(d)chrono::millisecondsYesMax wait time
SetTags(m)map<string,string>NoKey-value tags

CommandReceive

FieldTypeDescription
idstringCommand identifier
channelstringChannel name
bodystringCommand body
metadatastringString metadata
response_tostringReply-to address
tagsmap<string,string>Key-value tags

CommandReply

Built via CommandReply::Builder.

MethodTypeRequiredDescription
SetRequestId(s)stringYesOriginal command ID
SetResponseTo(s)stringYesReply-to address
SetExecuted(b)boolYesSuccess or failure
SetExecutedAt(n)int64_tNoExecution timestamp
SetBody(s)stringNoOptional response body

Queries

SendQuery

[[nodiscard]] StatusOr<QueryResponse> SendQuery(const Query& query);

Send a query and block until a handler responds or the timeout expires.

SubscribeToQueries

[[nodiscard]] StatusOr<std::unique_ptr<Subscription>> SubscribeToQueries(
    const std::string& channel, const std::string& group,
    std::function<void(const QueryReceive&)> on_query,
    std::function<void(const Status&)> on_error);

Subscribe to incoming queries. Use client->SendQueryResponse(reply) to respond.

SendQueryResponse

[[nodiscard]] Status SendQueryResponse(const QueryReply& reply);

Send a response to a received query.

Query Type

Built via Query::Builder.

MethodTypeRequiredDescription
SetChannel(s)stringYesTarget channel
SetBody(s)stringNoQuery body
SetMetadata(s)stringNoString metadata
SetTimeout(d)chrono::millisecondsYesMax wait time
SetCacheKey(s)stringNoCache key for server-side caching
SetCacheTTL(d)chrono::millisecondsNoCache duration
SetTags(m)map<string,string>NoKey-value tags

QueryResponse

FieldTypeDescription
executedboolWhether query was handled
bodystringResponse body (data)
metadatastringResponse metadata
cache_hitboolWhether result came from cache
tagsmap<string,string>Response tags

Quick Usage

rpc.cc
// Command
auto cmd_or = kubemq::Command::Builder()
    .SetChannel("commands")
    .SetBody("deploy")
    .SetTimeout(std::chrono::seconds(10))
    .Build();
auto resp = client->SendCommand(*cmd_or);

// Query with caching
auto q_or = kubemq::Query::Builder()
    .SetChannel("queries")
    .SetBody("get-users")
    .SetTimeout(std::chrono::seconds(10))
    .SetCacheKey("users-list")
    .SetCacheTTL(std::chrono::seconds(60))
    .Build();
auto result = client->SendQuery(*q_or);

See Also

Was this page helpful?

On this page