pulsar-client-cpp
Consumer.h
1 
19 #ifndef CONSUMER_HPP_
20 #define CONSUMER_HPP_
21 
22 #include <pulsar/BrokerConsumerStats.h>
23 #include <pulsar/ConsumerConfiguration.h>
24 #include <pulsar/TypedMessage.h>
25 #include <pulsar/defines.h>
26 
27 #include <iostream>
28 
29 namespace pulsar {
30 class PulsarWrapper;
31 class ConsumerImplBase;
32 class PulsarFriend;
33 typedef std::shared_ptr<ConsumerImplBase> ConsumerImplBasePtr;
37 class PULSAR_PUBLIC Consumer {
38  public:
42  Consumer();
43  virtual ~Consumer() = default;
44 
48  const std::string& getTopic() const;
49 
53  const std::string& getSubscriptionName() const;
54 
68  Result unsubscribe();
69 
81  void unsubscribeAsync(ResultCallback callback);
82 
93  Result receive(Message& msg);
94 
95  template <typename T>
96  Result receive(TypedMessage<T>& msg, typename TypedMessage<T>::Decoder decoder) {
97  Message rawMsg;
98  auto result = receive(rawMsg);
99  msg = TypedMessage<T>{rawMsg, decoder};
100  return result;
101  }
102 
111  Result receive(Message& msg, int timeoutMs);
112 
113  template <typename T>
114  Result receive(TypedMessage<T>& msg, int timeoutMs, typename TypedMessage<T>::Decoder decoder) {
115  Message rawMsg;
116  auto result = receive(rawMsg, timeoutMs);
117  msg = TypedMessage<T>{rawMsg, decoder};
118  return result;
119  }
120 
132  void receiveAsync(ReceiveCallback callback);
133 
134  template <typename T>
135  void receiveAsync(std::function<void(Result result, const TypedMessage<T>&)> callback,
136  typename TypedMessage<T>::Decoder decoder) {
137  receiveAsync([callback, decoder](Result result, const Message& msg) {
138  callback(result, TypedMessage<T>{msg, decoder});
139  });
140  }
141 
152  Result batchReceive(Messages& msgs);
153 
165  void batchReceiveAsync(BatchReceiveCallback callback);
166 
178  Result acknowledge(const Message& message);
179 
190  Result acknowledge(const MessageId& messageId);
191 
196  Result acknowledge(const MessageIdList& messageIdList);
197 
207  void acknowledgeAsync(const Message& message, ResultCallback callback);
208 
218  void acknowledgeAsync(const MessageId& messageId, ResultCallback callback);
219 
226  void acknowledgeAsync(const MessageIdList& messageIdList, ResultCallback callback);
227 
245  Result acknowledgeCumulative(const Message& message);
246 
263  Result acknowledgeCumulative(const MessageId& messageId);
264 
275  void acknowledgeCumulativeAsync(const Message& message, ResultCallback callback);
276 
287  void acknowledgeCumulativeAsync(const MessageId& messageId, ResultCallback callback);
288 
319  void negativeAcknowledge(const Message& message);
320 
351  void negativeAcknowledge(const MessageId& messageId);
352 
356  Result close();
357 
362  void closeAsync(ResultCallback callback);
363 
367  Result pauseMessageListener();
368 
373  Result resumeMessageListener();
374 
384  void redeliverUnacknowledgedMessages();
385 
398  Result getBrokerConsumerStats(BrokerConsumerStats& brokerConsumerStats);
399 
411  void getBrokerConsumerStatsAsync(BrokerConsumerStatsCallback callback);
412 
423  Result seek(const MessageId& messageId);
424 
431  Result seek(uint64_t timestamp);
432 
443  virtual void seekAsync(const MessageId& messageId, ResultCallback callback);
444 
451  virtual void seekAsync(uint64_t timestamp, ResultCallback callback);
452 
456  bool isConnected() const;
457 
462  void getLastMessageIdAsync(GetLastMessageIdCallback callback);
463 
467  Result getLastMessageId(MessageId& messageId);
468 
469  private:
470  ConsumerImplBasePtr impl_;
471  explicit Consumer(ConsumerImplBasePtr);
472 
473  friend class PulsarFriend;
474  friend class PulsarWrapper;
475  friend class MultiTopicsConsumerImpl;
476  friend class ConsumerImpl;
477  friend class ClientImpl;
478  friend class ConsumerTest;
479 };
480 } // namespace pulsar
481 
482 #endif /* CONSUMER_HPP_ */
pulsar::MessageId
Definition: MessageId.h:34
pulsar::Result
Result
Definition: Result.h:31
pulsar::Messages
std::vector< Message > Messages
Callback definition for non-data operation.
Definition: ConsumerConfiguration.h:46
pulsar::Message
Definition: Message.h:43
pulsar::TypedMessage
Definition: TypedMessage.h:28
pulsar::BrokerConsumerStats
Definition: BrokerConsumerStats.h:35
pulsar::Consumer
Definition: Consumer.h:37
pulsar
Definition: Authentication.h:31
pulsar::ResultCallback
std::function< void(Result result)> ResultCallback
Callback definition for non-data operation.
Definition: ConsumerConfiguration.h:50