userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
client.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/urabbitmq/client.hpp
4
/// @brief @copybrief urabbitmq::Client
5
6
#
include
<
memory
>
7
8
#
include
<
userver
/
clients
/
dns
/
resolver_fwd
.
hpp
>
9
#
include
<
userver
/
utils
/
fast_pimpl
.
hpp
>
10
#
include
<
userver
/
utils
/
statistics
/
writer
.
hpp
>
11
12
#
include
<
userver
/
rabbitmq_fwd
.
hpp
>
13
#
include
<
userver
/
urabbitmq
/
broker_interface
.
hpp
>
14
#
include
<
userver
/
urabbitmq
/
client_settings
.
hpp
>
15
16
USERVER_NAMESPACE_BEGIN
17
18
namespace
urabbitmq {
19
20
class
ConsumerBase
;
21
class
ClientImpl;
22
23
/// @ingroup userver_clients
24
///
25
/// @brief Interface for communicating with a RabbitMQ cluster.
26
///
27
/// Usually retrieved from components::RabbitMQ component.
28
class
Client
29
:
public
std::enable_shared_from_this<
Client
>,
30
public
IAdminInterface
,
31
public
IChannelInterface
,
32
public
IReliableChannelInterface
{
33
public
:
34
/// Client factory function
35
/// @param resolver asynchronous DNS resolver
36
/// @param settings client settings
37
static
std::shared_ptr<
Client
>
Create
(clients::dns::
Resolver
& resolver,
const
ClientSettings& settings);
38
/// Client destructor
39
~
Client
();
40
41
void
DeclareExchange
(
42
const
Exchange& exchange,
43
Exchange::
Type
type,
44
utils
::Flags<Exchange::
Flags
> flags,
45
engine::Deadline deadline
46
)
override
;
47
48
void
DeclareExchange
(
const
Exchange& exchange, Exchange::
Type
type, engine::Deadline deadline)
override
{
49
DeclareExchange
(
exchange
,
type
,
{}
,
deadline
)
;
50
}
51
52
void
DeclareExchange
(
const
Exchange& exchange, engine::Deadline deadline)
override
{
53
DeclareExchange
(
exchange
,
Exchange::
Type
::kFanOut
,
{}
,
deadline
)
;
54
}
55
56
QueueDeclareResponse
DeclareQueue
(
57
const
Queue& queue,
58
utils
::Flags<Queue::
Flags
> flags,
59
const
std::unordered_map<std::string,
HeaderValue
>& headers,
60
engine::Deadline deadline
61
)
override
;
62
63
QueueDeclareResponse
64
DeclareQueue
(
const
Queue& queue,
utils
::Flags<Queue::
Flags
> flags, engine::Deadline deadline)
override
{
65
return
DeclareQueue
(
queue
,
flags
,
{}
,
deadline
)
;
66
}
67
68
QueueDeclareResponse
DeclareQueue
(
const
Queue& queue, engine::Deadline deadline)
override
{
69
return
DeclareQueue
(
queue
,
{}
,
{}
,
deadline
)
;
70
}
71
72
void
BindQueue
(
73
const
Exchange& exchange,
74
const
Queue& queue,
75
const
std::string& routing_key,
76
engine::Deadline deadline
77
)
override
;
78
79
void
RemoveExchange
(
const
Exchange& exchange, engine::Deadline deadline)
override
;
80
81
void
RemoveQueue
(
const
Queue& queue, engine::Deadline deadline)
override
;
82
83
/// @brief Get an administrative interface for the broker.
84
///
85
/// @param deadline deadline for connection acquisition from the pool
86
AdminChannel
GetAdminChannel
(engine::Deadline deadline);
87
88
void
Publish
(
89
const
Exchange& exchange,
90
const
std::string& routing_key,
91
const
std::string& message,
92
MessageType
type,
93
engine::Deadline deadline
94
)
override
{
95
Publish
(
exchange
,
routing_key
,
Envelope
{message, type, {}, {}, {}}
,
deadline
)
;
96
};
97
98
void
Publish
(
99
const
Exchange& exchange,
100
const
std::string& routing_key,
101
const
std::string& message,
102
engine::Deadline deadline
103
)
override
{
104
Publish
(
exchange
,
routing_key
,
message
,
MessageType
::kTransient
,
deadline
)
;
105
};
106
107
void
Publish
(
108
const
Exchange& exchange,
109
const
std::string& routing_key,
110
const
Envelope
& envelope,
111
engine::Deadline deadline
112
)
override
;
113
114
std::string
Get
(
const
Queue& queue,
utils
::Flags<Queue::
Flags
> flags, engine::Deadline deadline)
override
;
115
116
/// @brief Get a publisher interface for the broker.
117
///
118
/// @param deadline deadline for connection acquisition from the pool
119
Channel
GetChannel
(engine::Deadline deadline);
120
121
void
PublishReliable
(
122
const
Exchange& exchange,
123
const
std::string& routing_key,
124
const
std::string& message,
125
MessageType
type,
126
engine::Deadline deadline
127
)
override
{
128
PublishReliable
(
exchange
,
routing_key
,
Envelope
{message, type, {}, {}, {}}
,
deadline
)
;
129
}
130
131
void
PublishReliable
(
132
const
Exchange& exchange,
133
const
std::string& routing_key,
134
const
std::string& message,
135
engine::Deadline deadline
136
)
override
{
137
PublishReliable
(
exchange
,
routing_key
,
message
,
MessageType
::kTransient
,
deadline
)
;
138
}
139
140
void
PublishReliable
(
141
const
Exchange& exchange,
142
const
std::string& routing_key,
143
const
Envelope
& envelope,
144
engine::Deadline deadline
145
)
override
;
146
147
/// @brief Get a reliable publisher interface for the broker
148
/// (publisher-confirms)
149
///
150
/// @param deadline deadline for connection acquisition from the pool
151
ReliableChannel
GetReliableChannel
(engine::Deadline deadline);
152
153
/// Write cluster statistics
154
void
WriteStatistics
(
utils
::
statistics
::Writer& writer)
const
;
155
156
protected
:
157
Client(clients::dns::
Resolver
& resolver,
const
ClientSettings& settings);
158
159
private
:
160
friend
class
ConsumerBase
;
161
utils
::FastPimpl<ClientImpl, 296, 8> impl_;
162
};
163
164
}
// namespace urabbitmq
165
166
USERVER_NAMESPACE_END
userver
urabbitmq
client.hpp
Generated on
for userver by
Doxygen
1.17.0