forked from apache/pulsar
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CPP Client - Async call for getting broker side consumer stats
- Loading branch information
Showing
19 changed files
with
1,062 additions
and
209 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/** | ||
* Copyright 2016 Yahoo Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#ifndef PULSAR_CPP_BROKERCONSUMERSTATS_H | ||
#define PULSAR_CPP_BROKERCONSUMERSTATS_H | ||
|
||
#include <boost/date_time/posix_time/ptime.hpp> | ||
#include <string.h> | ||
#include <iostream> | ||
#include <pulsar/Result.h> | ||
#include <boost/function.hpp> | ||
#include <pulsar/ConsumerType.h> | ||
|
||
namespace pulsar { | ||
class BrokerConsumerStatsImplBase; | ||
|
||
/* @note: isValid() or getXXX() methods are not allowed on an invalid BrokerConsumerStats */ | ||
class BrokerConsumerStats { | ||
private: | ||
boost::shared_ptr<BrokerConsumerStatsImplBase> impl_; | ||
public: | ||
explicit BrokerConsumerStats(boost::shared_ptr<BrokerConsumerStatsImplBase> impl); | ||
|
||
BrokerConsumerStats(); | ||
|
||
/** Returns true if the Stats are still valid **/ | ||
virtual bool isValid() const; | ||
|
||
/** Returns the rate of messages delivered to the consumer. msg/s */ | ||
virtual double getMsgRateOut() const; | ||
|
||
/** Returns the throughput delivered to the consumer. bytes/s */ | ||
virtual double getMsgThroughputOut() const; | ||
|
||
/** Returns the rate of messages redelivered by this consumer. msg/s */ | ||
virtual double getMsgRateRedeliver() const; | ||
|
||
/** Returns the Name of the consumer */ | ||
virtual const std::string getConsumerName() const; | ||
|
||
/** Returns the Number of available message permits for the consumer */ | ||
virtual uint64_t getAvailablePermits() const; | ||
|
||
/** Returns the Number of unacknowledged messages for the consumer */ | ||
virtual uint64_t getUnackedMessages() const; | ||
|
||
/** Returns true if the consumer is blocked due to unacked messages. */ | ||
virtual bool isBlockedConsumerOnUnackedMsgs() const; | ||
|
||
/** Returns the Address of this consumer */ | ||
virtual const std::string getAddress() const; | ||
|
||
/** Returns the Timestamp of connection */ | ||
virtual const std::string getConnectedSince() const; | ||
|
||
/** Returns Whether this subscription is Exclusive or Shared or Failover */ | ||
virtual const ConsumerType getType() const; | ||
|
||
/** Returns the rate of messages expired on this subscription. msg/s */ | ||
virtual double getMsgRateExpired() const; | ||
|
||
/** Returns the Number of messages in the subscription backlog */ | ||
virtual uint64_t getMsgBacklog() const; | ||
|
||
/** @deprecated */ | ||
boost::shared_ptr<BrokerConsumerStatsImplBase> getImpl() const; | ||
|
||
friend std::ostream& operator<<(std::ostream &os, const BrokerConsumerStats &obj); | ||
}; | ||
typedef boost::function<void(Result result, BrokerConsumerStats brokerConsumerStats)> BrokerConsumerStatsCallback; | ||
|
||
} | ||
#endif //PULSAR_CPP_BROKERCONSUMERSTATS_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/** | ||
* Copyright 2016 Yahoo Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#ifndef PULSAR_CPP_CONSUMERTYPE_H | ||
#define PULSAR_CPP_CONSUMERTYPE_H | ||
|
||
namespace pulsar { | ||
enum ConsumerType { | ||
/** | ||
* There can be only 1 consumer on the same topic with the same consumerName | ||
*/ | ||
ConsumerExclusive, | ||
|
||
/** | ||
* Multiple consumers will be able to use the same consumerName and the messages | ||
* will be dispatched according to a round-robin rotation between the connected consumers | ||
*/ | ||
ConsumerShared, | ||
|
||
/** Only one consumer is active on the subscription; Subscription can have N consumers | ||
* connected one of which will get promoted to master if the current master becomes inactive | ||
*/ | ||
ConsumerFailover | ||
}; | ||
} | ||
|
||
#endif //PULSAR_CPP_CONSUMERTYPE_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
/** | ||
* Copyright 2016 Yahoo Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#include <pulsar/BrokerConsumerStats.h> | ||
#include <lib/BrokerConsumerStatsImplBase.h> | ||
|
||
namespace pulsar { | ||
BrokerConsumerStats::BrokerConsumerStats(boost::shared_ptr<BrokerConsumerStatsImplBase> impl) | ||
: impl_(impl) { | ||
} | ||
|
||
BrokerConsumerStats::BrokerConsumerStats() { | ||
} | ||
|
||
boost::shared_ptr<BrokerConsumerStatsImplBase> BrokerConsumerStats::getImpl() const { | ||
return impl_; | ||
} | ||
|
||
bool BrokerConsumerStats::isValid() const { | ||
return impl_->isValid(); | ||
} | ||
|
||
std::ostream& operator<<(std::ostream &os, const BrokerConsumerStats& obj) { | ||
os << "\nBrokerConsumerStats [" << "validTill_ = " << obj.isValid() << ", msgRateOut_ = " | ||
<< obj.getMsgRateOut() << ", msgThroughputOut_ = " << obj.getMsgThroughputOut() | ||
<< ", msgRateRedeliver_ = " << obj.getMsgRateRedeliver() << ", consumerName_ = " | ||
<< obj.getConsumerName() << ", availablePermits_ = " << obj.getAvailablePermits() | ||
<< ", unackedMessages_ = " << obj.getUnackedMessages() | ||
<< ", blockedConsumerOnUnackedMsgs_ = " << obj.isBlockedConsumerOnUnackedMsgs() | ||
<< ", address_ = " << obj.getAddress() << ", connectedSince_ = " << obj.getConnectedSince() | ||
<< ", type_ = " << obj.getType() << ", msgRateExpired_ = " << obj.getMsgRateExpired() | ||
<< ", msgBacklog_ = " << obj.getMsgBacklog() << "]"; | ||
return os; | ||
} | ||
|
||
double BrokerConsumerStats::getMsgRateOut() const { | ||
if (impl_) { | ||
return impl_->getMsgRateOut(); | ||
} | ||
return 0; | ||
} | ||
|
||
double BrokerConsumerStats::getMsgThroughputOut() const { | ||
return impl_->getMsgThroughputOut(); | ||
} | ||
|
||
double BrokerConsumerStats::getMsgRateRedeliver() const { | ||
return impl_->getMsgRateRedeliver(); | ||
} | ||
|
||
const std::string BrokerConsumerStats::getConsumerName() const { | ||
return impl_->getConsumerName(); | ||
} | ||
|
||
uint64_t BrokerConsumerStats::getAvailablePermits() const { | ||
return impl_->getAvailablePermits(); | ||
} | ||
|
||
uint64_t BrokerConsumerStats::getUnackedMessages() const { | ||
return impl_->getUnackedMessages(); | ||
} | ||
|
||
bool BrokerConsumerStats::isBlockedConsumerOnUnackedMsgs() const { | ||
return impl_->isBlockedConsumerOnUnackedMsgs(); | ||
} | ||
|
||
const std::string BrokerConsumerStats::getAddress() const { | ||
return impl_->getAddress(); | ||
} | ||
|
||
const std::string BrokerConsumerStats::getConnectedSince() const { | ||
return impl_->getConnectedSince(); | ||
} | ||
|
||
const ConsumerType BrokerConsumerStats::getType() const { | ||
return impl_->getType(); | ||
} | ||
|
||
double BrokerConsumerStats::getMsgRateExpired() const { | ||
return impl_->getMsgRateExpired(); | ||
} | ||
|
||
uint64_t BrokerConsumerStats::getMsgBacklog() const { | ||
return impl_->getMsgBacklog(); | ||
} | ||
} |
Oops, something went wrong.