rocketmq_client_rust/
lib.rs1#![allow(dead_code)]
16#![allow(unused_variables)]
17#![allow(clippy::result_large_err)]
18#![recursion_limit = "256"]
19
20extern crate core;
21
22#[macro_export]
25macro_rules! mq_client_err {
26 ($response_code:expr, $fmt:expr, $($arg:expr),*) => {{
28 let formatted_msg = format!($fmt, $($arg),*);
29 let error_message = format!("CODE: {} DESC: {}", $response_code as i32, formatted_msg);
30 let faq_msg = rocketmq_common::common::FAQUrl::attach_default_url(Some(error_message.as_str()));
31 rocketmq_error::RocketMQError::illegal_argument(faq_msg)
32 }};
33
34 ($response_code:expr, $error_message:expr) => {{
35 let error_message = format!("CODE: {} DESC: {}", $response_code as i32, $error_message);
36 let faq_msg = rocketmq_common::common::FAQUrl::attach_default_url(Some(error_message.as_str()));
37 rocketmq_error::RocketMQError::illegal_argument(faq_msg)
38 }};
39
40 ($error_message:expr) => {{
42 let error_msg = format!("{}", $error_message);
43 let faq_msg = rocketmq_common::common::FAQUrl::attach_default_url(Some(error_msg.as_str()));
44 rocketmq_error::RocketMQError::illegal_argument(faq_msg)
45 }};
46}
47
48#[macro_export]
50macro_rules! client_broker_err {
51 ($response_code:expr, $error_message:expr, $broker_addr:expr) => {{
53 rocketmq_error::RocketMQError::broker_operation_failed(
54 "BROKER_OPERATION",
55 $response_code as i32,
56 $error_message,
57 )
58 .with_broker_addr($broker_addr)
59 }};
60 ($response_code:expr, $error_message:expr) => {{
62 rocketmq_error::RocketMQError::broker_operation_failed(
63 "BROKER_OPERATION",
64 $response_code as i32,
65 $error_message,
66 )
67 }};
68}
69
70pub mod client_error;
72
73pub mod admin;
74pub mod base;
75pub mod common;
76pub mod consumer;
77pub mod exception;
78pub mod factory;
79mod hook;
80pub mod implementation;
81pub mod latency;
82pub mod legacy;
83pub mod lock;
84pub mod producer;
85pub mod stat;
86mod trace;
87mod types;
88pub mod utils;
89
90pub use crate::admin::DefaultMQAdminExt;
91pub use crate::admin::DefaultMQAdminExtImpl;
92pub use crate::admin::MQAdminExt;
93pub use crate::admin::MQAdminExtInner;
94pub use crate::admin::MQAdminExtInnerImpl;
95pub use crate::base::MQAdmin;
96pub use crate::base::MqClientAdmin;
97pub use crate::base::MqClientAdminInner;
98pub use crate::common::acl::AclConstants;
99pub use crate::common::acl::AclException;
100pub use crate::common::acl::AclSigner;
101pub use crate::common::acl::AclUtils;
102pub use crate::common::acl::Permission;
103pub use crate::common::acl::SigningAlgorithm;
104pub use crate::common::acl_client_rpc_hook::AclClientRPCHook;
105pub use crate::common::admin_tool_result::AdminToolResult;
106pub use crate::common::admin_tools_result_code_enum::AdminToolsResultCodeEnum;
107pub use crate::common::nameserver_access_config::NameserverAccessConfig;
108pub use crate::common::session_credentials::SessionCredentials;
109pub use crate::consumer::consumer_impl::pull_request_ext::PullResultExt;
110pub use crate::consumer::notify_result::NotifyResult;
111pub use crate::consumer::AbstractAllocateMessageQueueStrategy;
112pub use crate::consumer::AckCallback;
113pub use crate::consumer::AckCallbackFn;
114pub use crate::consumer::AckResult;
115pub use crate::consumer::AckStatus;
116pub use crate::consumer::AllocateMachineRoomNearby;
117pub use crate::consumer::AllocateMessageQueueAveragely;
118pub use crate::consumer::AllocateMessageQueueAveragelyByCircle;
119pub use crate::consumer::AllocateMessageQueueByConfig;
120pub use crate::consumer::AllocateMessageQueueByMachineRoom;
121pub use crate::consumer::AllocateMessageQueueByMachineRoomNearby;
122pub use crate::consumer::AllocateMessageQueueConsistentHash;
123pub use crate::consumer::AllocateMessageQueueStrategy;
124pub use crate::consumer::ArcMessageQueueListener;
125pub use crate::consumer::ConsumeConcurrentlyContext;
126pub use crate::consumer::ConsumeConcurrentlyStatus;
127pub use crate::consumer::ConsumeOrderlyContext;
128pub use crate::consumer::ConsumeOrderlyStatus;
129pub use crate::consumer::ControllableOffset;
130pub use crate::consumer::DefaultLitePullConsumer;
131pub use crate::consumer::DefaultLitePullConsumerBuilder;
132pub use crate::consumer::DefaultMQPushConsumer;
133pub use crate::consumer::DefaultMQPushConsumerBuilder;
134pub use crate::consumer::HashFunction;
135pub use crate::consumer::LitePullConsumer;
136pub use crate::consumer::LocalFileOffsetStore;
137pub use crate::consumer::MQConsumer;
138pub use crate::consumer::MQConsumerInner;
139pub use crate::consumer::MQPushConsumer;
140pub use crate::consumer::MachineRoomResolver;
141pub use crate::consumer::MessageListener;
142pub use crate::consumer::MessageListenerConcurrently;
143pub use crate::consumer::MessageListenerOrderly;
144pub use crate::consumer::MessageQueueListener;
145pub use crate::consumer::MessageSelector;
146pub use crate::consumer::OffsetSerialize;
147pub use crate::consumer::OffsetSerializeWrapper;
148pub use crate::consumer::OffsetStore;
149pub use crate::consumer::PopCallback;
150pub use crate::consumer::PopCallbackFn;
151pub use crate::consumer::PopResult;
152pub use crate::consumer::PopStatus;
153pub use crate::consumer::PullCallback;
154pub use crate::consumer::PullCallbackFn;
155pub use crate::consumer::PullResult;
156pub use crate::consumer::PullStatus;
157pub use crate::consumer::ReadOffsetType;
158pub use crate::consumer::RemoteBrokerOffsetStore;
159pub use crate::consumer::TopicMessageQueueChangeListener;
160pub use crate::exception::MQBrokerException;
161pub use crate::exception::MQClientException;
162pub use crate::exception::OffsetNotFoundException;
163pub use crate::exception::RequestTimeoutException;
164pub use crate::hook::consume_message_context::ConsumeMessageContext;
165pub use crate::hook::consume_message_hook::ConsumeMessageHook;
166pub use crate::hook::consume_message_hook::ConsumeMessageHookArc;
167pub use crate::implementation::mq_client_api_factory::MQClientAPIFactory;
168pub type MQClientAPIExt = crate::implementation::mq_client_api_impl::MQClientAPIImpl;
169pub type MqClientAdminImpl = crate::implementation::mq_client_api_impl::MQClientAPIImpl;
170pub use crate::latency::BrokerFilter;
171pub use crate::latency::MQFaultStrategy;
172pub use crate::latency::Resolver;
173pub use crate::latency::ServiceDetector;
174#[allow(deprecated)]
175pub use crate::legacy::ConsumeMessageOpenTracingHookImpl;
176pub use crate::legacy::ConsumeRequest;
177#[allow(deprecated)]
178pub use crate::legacy::DefaultMQPullConsumer;
179#[allow(deprecated)]
180pub use crate::legacy::DefaultMQPullConsumerImpl;
181pub use crate::legacy::DoNothingClientRemotingProcessor;
182#[allow(deprecated)]
183pub use crate::legacy::EndTransactionOpenTracingHookImpl;
184#[allow(deprecated)]
185pub use crate::legacy::MQHelper;
186#[allow(deprecated)]
187pub use crate::legacy::MQPullConsumer;
188#[allow(deprecated)]
189pub use crate::legacy::MQPullConsumerScheduleService;
190#[allow(deprecated)]
191pub use crate::legacy::PullTaskCallback;
192#[allow(deprecated)]
193pub use crate::legacy::PullTaskContext;
194#[allow(deprecated)]
195pub use crate::legacy::PullTaskImpl;
196pub use crate::legacy::RebalanceImpl;
197#[allow(deprecated)]
198pub use crate::legacy::RebalancePullImpl;
199#[allow(deprecated)]
200pub use crate::legacy::SendMessageOpenTracingHookImpl;
201#[allow(deprecated)]
202pub use crate::legacy::TransactionCheckListener;
203pub use crate::lock::ReadWriteCASLock;
204pub use crate::producer::DefaultMQProducer;
205pub use crate::producer::JavaHashCode;
206pub use crate::producer::LocalTransactionState;
207pub use crate::producer::MQProducer;
208pub use crate::producer::MessageQueueSelector;
209pub use crate::producer::MessageQueueSelectorFn;
210pub use crate::producer::RequestCallback;
211pub use crate::producer::SelectMessageQueueByHash;
212pub use crate::producer::SelectMessageQueueByMachineRoom;
213pub use crate::producer::SelectMessageQueueByRandom;
214pub use crate::producer::SendCallback;
215pub use crate::producer::SendResult;
216pub use crate::producer::SendStatus;
217pub use crate::producer::TransactionListener;
218pub use crate::producer::TransactionMQProducer;
219pub use crate::producer::TransactionMQProducerBuilder;
220pub use crate::producer::TransactionSendResult;
221pub use crate::trace::async_trace_dispatcher::AsyncTraceDispatcher;
222pub use crate::trace::trace_data_encoder::TraceDataEncoder;
223pub use crate::trace::trace_dispatcher::ArcTraceDispatcher;
224pub use crate::trace::trace_dispatcher::TraceDispatcher;
225pub use crate::trace::trace_dispatcher::Type as TraceDispatcherOperation;
226pub use crate::trace::trace_dispatcher_type::TraceDispatcherType;
227pub use crate::trace::trace_type::TraceType;
228
229#[cfg(test)]
230mod tests {
231 #[test]
232 fn mq_client_err_without_response_code_preserves_message() {
233 let err = crate::mq_client_err!("simple client error");
234
235 match err {
236 rocketmq_error::RocketMQError::IllegalArgument(message) => {
237 assert!(message.contains("simple client error"));
238 assert!(!message.contains("Body is empty"));
239 }
240 other => panic!("expected illegal argument error, got {other:?}"),
241 }
242 }
243}