RMQ - RabbitMQ C++ Library
rmqt_consumerconfig.h
1// Copyright 2020-2023 Bloomberg Finance L.P.
2// SPDX-License-Identifier: Apache-2.0
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// rmqt_consumerconfig.h
17#ifndef INCLUDED_RMQT_CONSUMERCONFIG
18#define INCLUDED_RMQT_CONSUMERCONFIG
19
20#include <rmqt_properties.h>
21#include <rmqt_queue.h>
22#include <rmqt_topology.h>
23
24#include <bdlmt_threadpool.h>
25
26#include <bsl_cstdint.h>
27#include <bsl_memory.h>
28#include <bsl_optional.h>
29#include <bsl_vector.h>
30
31namespace BloombergLP {
32namespace rmqp {
33class MessageTransformer; // forward declaration
34}
35
36namespace rmqt {
37
41
43 public:
44 static const uint16_t s_defaultPrefetchCount;
45
47 static bsl::string generateConsumerTag();
48
68 explicit ConsumerConfig(
69 const bsl::string& consumerTag = generateConsumerTag(),
70 uint16_t prefetchCount = s_defaultPrefetchCount,
71 bdlmt::ThreadPool* threadpool = 0,
72 rmqt::Exclusive::Value exclusiveFlag = rmqt::Exclusive::OFF,
73 bsl::optional<int64_t> consumerPriority = bsl::optional<int64_t>());
74
76
77 // Getters
78 const bsl::string& consumerTag() const { return d_consumerTag; }
79
80 uint16_t prefetchCount() const { return d_prefetchCount; }
81
82 bdlmt::ThreadPool* threadpool() const { return d_threadpool; }
83
84 rmqt::Exclusive::Value exclusiveFlag() const { return d_exclusiveFlag; }
85
86 bsl::optional<int64_t> consumerPriority() const
87 {
88 return d_consumerPriority;
89 }
90
91 const bsl::vector<bsl::shared_ptr<rmqp::MessageTransformer> >&
92 transformers() const
93 {
94 return d_transformers;
95 }
96
97 // Setters
101 ConsumerConfig& setConsumerTag(const bsl::string& consumerTag)
102 {
103 d_consumerTag = consumerTag;
104 return *this;
105 }
106
110 ConsumerConfig& setPrefetchCount(uint16_t prefetchCount)
111
112 {
113 d_prefetchCount = prefetchCount;
114 return *this;
115 }
116
124 ConsumerConfig& setThreadpool(bdlmt::ThreadPool* threadpool)
125 {
126 d_threadpool = threadpool;
127 return *this;
128 }
135 setExclusiveFlag(rmqt::Exclusive::Value exclusiveFlag = rmqt::Exclusive::ON)
136 {
137 d_exclusiveFlag = exclusiveFlag;
138 return *this;
139 }
140
149 setConsumerPriority(const bsl::optional<int64_t>& consumerPriority)
150 {
151 d_consumerPriority = consumerPriority;
152 return *this;
153 }
154
160 addTransformer(const bsl::shared_ptr<rmqp::MessageTransformer>& transformer)
161 {
162 d_transformers.push_back(transformer);
163 return *this;
164 }
165
166 private:
167 bsl::string d_consumerTag;
168 uint16_t d_prefetchCount;
169 bdlmt::ThreadPool* d_threadpool;
170 rmqt::Exclusive::Value d_exclusiveFlag;
171 bsl::optional<int64_t> d_consumerPriority;
172 bsl::vector<bsl::shared_ptr<rmqp::MessageTransformer> > d_transformers;
173};
174
175} // namespace rmqt
176} // namespace BloombergLP
177
178#endif
Class for passing arguments to Consumer.
Definition: rmqt_consumerconfig.h:42
ConsumerConfig & setExclusiveFlag(rmqt::Exclusive::Value exclusiveFlag=rmqt::Exclusive::ON)
Definition: rmqt_consumerconfig.h:135
ConsumerConfig & setConsumerPriority(const bsl::optional< int64_t > &consumerPriority)
Definition: rmqt_consumerconfig.h:149
ConsumerConfig & setPrefetchCount(uint16_t prefetchCount)
Definition: rmqt_consumerconfig.h:110
ConsumerConfig & setThreadpool(bdlmt::ThreadPool *threadpool)
Definition: rmqt_consumerconfig.h:124
static bsl::string generateConsumerTag()
Util method to generate a default Consumer tag.
Definition: rmqt_consumerconfig.cpp:42
ConsumerConfig & setConsumerTag(const bsl::string &consumerTag)
Definition: rmqt_consumerconfig.h:101
ConsumerConfig & addTransformer(const bsl::shared_ptr< rmqp::MessageTransformer > &transformer)
Definition: rmqt_consumerconfig.h:160
ConsumerConfig(const bsl::string &consumerTag=generateConsumerTag(), uint16_t prefetchCount=s_defaultPrefetchCount, bdlmt::ThreadPool *threadpool=0, rmqt::Exclusive::Value exclusiveFlag=rmqt::Exclusive::OFF, bsl::optional< int64_t > consumerPriority=bsl::optional< int64_t >())
Definition: rmqt_consumerconfig.cpp:25