rocketmq-client-nodejs-bate 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +186 -0
  3. package/dist/client/BaseClient.d.ts +95 -0
  4. package/dist/client/BaseClient.js +324 -0
  5. package/dist/client/ClientId.d.ts +24 -0
  6. package/dist/client/ClientId.js +33 -0
  7. package/dist/client/Logger.d.ts +25 -0
  8. package/dist/client/Logger.js +33 -0
  9. package/dist/client/RpcClient.d.ts +48 -0
  10. package/dist/client/RpcClient.js +219 -0
  11. package/dist/client/RpcClientManager.d.ts +42 -0
  12. package/dist/client/RpcClientManager.js +144 -0
  13. package/dist/client/SessionCredentials.d.ts +21 -0
  14. package/dist/client/SessionCredentials.js +19 -0
  15. package/dist/client/Settings.d.ts +31 -0
  16. package/dist/client/Settings.js +40 -0
  17. package/dist/client/TelemetrySession.d.ts +27 -0
  18. package/dist/client/TelemetrySession.js +110 -0
  19. package/dist/client/UserAgent.d.ts +25 -0
  20. package/dist/client/UserAgent.js +47 -0
  21. package/dist/client/index.d.ts +26 -0
  22. package/dist/client/index.js +43 -0
  23. package/dist/consumer/Assignment.d.ts +23 -0
  24. package/dist/consumer/Assignment.js +40 -0
  25. package/dist/consumer/Assignments.d.ts +24 -0
  26. package/dist/consumer/Assignments.js +47 -0
  27. package/dist/consumer/ConsumeResult.d.ts +20 -0
  28. package/dist/consumer/ConsumeResult.js +25 -0
  29. package/dist/consumer/ConsumeService.d.ts +28 -0
  30. package/dist/consumer/ConsumeService.js +49 -0
  31. package/dist/consumer/ConsumeTask.d.ts +24 -0
  32. package/dist/consumer/ConsumeTask.js +40 -0
  33. package/dist/consumer/Consumer.d.ts +38 -0
  34. package/dist/consumer/Consumer.js +111 -0
  35. package/dist/consumer/FifoConsumeService.d.ts +25 -0
  36. package/dist/consumer/FifoConsumeService.js +123 -0
  37. package/dist/consumer/FilterExpression.d.ts +25 -0
  38. package/dist/consumer/FilterExpression.js +40 -0
  39. package/dist/consumer/MessageListener.d.ts +21 -0
  40. package/dist/consumer/MessageListener.js +19 -0
  41. package/dist/consumer/ProcessQueue.d.ts +39 -0
  42. package/dist/consumer/ProcessQueue.js +286 -0
  43. package/dist/consumer/PushConsumer.d.ts +68 -0
  44. package/dist/consumer/PushConsumer.js +377 -0
  45. package/dist/consumer/PushSubscriptionSettings.d.ts +31 -0
  46. package/dist/consumer/PushSubscriptionSettings.js +97 -0
  47. package/dist/consumer/SimpleConsumer.d.ts +50 -0
  48. package/dist/consumer/SimpleConsumer.js +122 -0
  49. package/dist/consumer/SimpleSubscriptionSettings.d.ts +28 -0
  50. package/dist/consumer/SimpleSubscriptionSettings.js +57 -0
  51. package/dist/consumer/StandardConsumeService.d.ts +24 -0
  52. package/dist/consumer/StandardConsumeService.js +42 -0
  53. package/dist/consumer/SubscriptionLoadBalancer.d.ts +23 -0
  54. package/dist/consumer/SubscriptionLoadBalancer.js +46 -0
  55. package/dist/consumer/index.d.ts +32 -0
  56. package/dist/consumer/index.js +49 -0
  57. package/dist/exception/BadRequestException.d.ts +20 -0
  58. package/dist/exception/BadRequestException.js +28 -0
  59. package/dist/exception/ClientException.d.ts +20 -0
  60. package/dist/exception/ClientException.js +31 -0
  61. package/dist/exception/ForbiddenException.d.ts +20 -0
  62. package/dist/exception/ForbiddenException.js +28 -0
  63. package/dist/exception/InternalErrorException.d.ts +20 -0
  64. package/dist/exception/InternalErrorException.js +28 -0
  65. package/dist/exception/NotFoundException.d.ts +20 -0
  66. package/dist/exception/NotFoundException.js +28 -0
  67. package/dist/exception/PayloadTooLargeException.d.ts +20 -0
  68. package/dist/exception/PayloadTooLargeException.js +28 -0
  69. package/dist/exception/PaymentRequiredException.d.ts +20 -0
  70. package/dist/exception/PaymentRequiredException.js +28 -0
  71. package/dist/exception/ProxyTimeoutException.d.ts +20 -0
  72. package/dist/exception/ProxyTimeoutException.js +28 -0
  73. package/dist/exception/RequestHeaderFieldsTooLargeException.d.ts +20 -0
  74. package/dist/exception/RequestHeaderFieldsTooLargeException.js +28 -0
  75. package/dist/exception/StatusChecker.d.ts +20 -0
  76. package/dist/exception/StatusChecker.js +98 -0
  77. package/dist/exception/TooManyRequestsException.d.ts +20 -0
  78. package/dist/exception/TooManyRequestsException.js +28 -0
  79. package/dist/exception/UnauthorizedException.d.ts +20 -0
  80. package/dist/exception/UnauthorizedException.js +28 -0
  81. package/dist/exception/UnsupportedException.d.ts +20 -0
  82. package/dist/exception/UnsupportedException.js +28 -0
  83. package/dist/exception/index.d.ts +29 -0
  84. package/dist/exception/index.js +46 -0
  85. package/dist/index.d.ts +22 -0
  86. package/dist/index.js +39 -0
  87. package/dist/message/Message.d.ts +38 -0
  88. package/dist/message/Message.js +57 -0
  89. package/dist/message/MessageId.d.ts +59 -0
  90. package/dist/message/MessageId.js +123 -0
  91. package/dist/message/MessageView.d.ts +38 -0
  92. package/dist/message/MessageView.js +90 -0
  93. package/dist/message/PublishingMessage.d.ts +30 -0
  94. package/dist/message/PublishingMessage.js +100 -0
  95. package/dist/message/index.d.ts +20 -0
  96. package/dist/message/index.js +37 -0
  97. package/dist/producer/Producer.d.ts +55 -0
  98. package/dist/producer/Producer.js +318 -0
  99. package/dist/producer/PublishingLoadBalancer.d.ts +24 -0
  100. package/dist/producer/PublishingLoadBalancer.js +82 -0
  101. package/dist/producer/PublishingSettings.d.ts +28 -0
  102. package/dist/producer/PublishingSettings.js +70 -0
  103. package/dist/producer/RecallReceipt.d.ts +25 -0
  104. package/dist/producer/RecallReceipt.js +34 -0
  105. package/dist/producer/SendReceipt.d.ts +29 -0
  106. package/dist/producer/SendReceipt.js +60 -0
  107. package/dist/producer/Transaction.d.ts +28 -0
  108. package/dist/producer/Transaction.js +70 -0
  109. package/dist/producer/TransactionChecker.d.ts +21 -0
  110. package/dist/producer/TransactionChecker.js +19 -0
  111. package/dist/producer/index.d.ts +22 -0
  112. package/dist/producer/index.js +40 -0
  113. package/dist/retry/ExponentialBackoffRetryPolicy.d.ts +27 -0
  114. package/dist/retry/ExponentialBackoffRetryPolicy.js +64 -0
  115. package/dist/retry/RetryPolicy.d.ts +46 -0
  116. package/dist/retry/RetryPolicy.js +19 -0
  117. package/dist/retry/index.d.ts +18 -0
  118. package/dist/retry/index.js +35 -0
  119. package/dist/route/Broker.d.ts +25 -0
  120. package/dist/route/Broker.js +40 -0
  121. package/dist/route/Endpoints.d.ts +30 -0
  122. package/dist/route/Endpoints.js +71 -0
  123. package/dist/route/MessageQueue.d.ts +27 -0
  124. package/dist/route/MessageQueue.js +47 -0
  125. package/dist/route/TopicRouteData.d.ts +24 -0
  126. package/dist/route/TopicRouteData.js +37 -0
  127. package/dist/route/index.d.ts +20 -0
  128. package/dist/route/index.js +37 -0
  129. package/dist/util/index.d.ts +35 -0
  130. package/dist/util/index.js +88 -0
  131. package/package.json +62 -0
  132. package/proto/apache/rocketmq/v2/admin.proto +43 -0
  133. package/proto/apache/rocketmq/v2/admin_grpc_pb.d.ts +41 -0
  134. package/proto/apache/rocketmq/v2/admin_grpc_pb.js +60 -0
  135. package/proto/apache/rocketmq/v2/admin_pb.d.ts +56 -0
  136. package/proto/apache/rocketmq/v2/admin_pb.js +340 -0
  137. package/proto/apache/rocketmq/v2/definition.proto +570 -0
  138. package/proto/apache/rocketmq/v2/definition_grpc_pb.js +1 -0
  139. package/proto/apache/rocketmq/v2/definition_pb.d.ts +885 -0
  140. package/proto/apache/rocketmq/v2/definition_pb.js +6141 -0
  141. package/proto/apache/rocketmq/v2/service.proto +443 -0
  142. package/proto/apache/rocketmq/v2/service_grpc_pb.d.ts +294 -0
  143. package/proto/apache/rocketmq/v2/service_grpc_pb.js +637 -0
  144. package/proto/apache/rocketmq/v2/service_pb.d.ts +1249 -0
  145. package/proto/apache/rocketmq/v2/service_pb.js +9723 -0
  146. package/src/client/BaseClient.ts +404 -0
  147. package/src/client/ClientId.ts +31 -0
  148. package/src/client/Logger.ts +36 -0
  149. package/src/client/RpcClient.ts +258 -0
  150. package/src/client/RpcClientManager.ts +180 -0
  151. package/src/client/SessionCredentials.ts +22 -0
  152. package/src/client/Settings.ts +46 -0
  153. package/src/client/TelemetrySession.ts +130 -0
  154. package/src/client/UserAgent.ts +45 -0
  155. package/src/client/index.ts +27 -0
  156. package/src/consumer/Assignment.ts +39 -0
  157. package/src/consumer/Assignments.ts +46 -0
  158. package/src/consumer/ConsumeResult.ts +21 -0
  159. package/src/consumer/ConsumeService.ts +54 -0
  160. package/src/consumer/ConsumeTask.ts +40 -0
  161. package/src/consumer/Consumer.ts +129 -0
  162. package/src/consumer/FifoConsumeService.ts +136 -0
  163. package/src/consumer/FilterExpression.ts +42 -0
  164. package/src/consumer/MessageListener.ts +23 -0
  165. package/src/consumer/ProcessQueue.ts +326 -0
  166. package/src/consumer/PushConsumer.ts +473 -0
  167. package/src/consumer/PushSubscriptionSettings.ts +123 -0
  168. package/src/consumer/SimpleConsumer.ts +153 -0
  169. package/src/consumer/SimpleSubscriptionSettings.ts +64 -0
  170. package/src/consumer/StandardConsumeService.ts +44 -0
  171. package/src/consumer/SubscriptionLoadBalancer.ts +47 -0
  172. package/src/consumer/index.ts +33 -0
  173. package/src/exception/BadRequestException.ts +25 -0
  174. package/src/exception/ClientException.ts +29 -0
  175. package/src/exception/ForbiddenException.ts +25 -0
  176. package/src/exception/InternalErrorException.ts +25 -0
  177. package/src/exception/NotFoundException.ts +25 -0
  178. package/src/exception/PayloadTooLargeException.ts +25 -0
  179. package/src/exception/PaymentRequiredException.ts +25 -0
  180. package/src/exception/ProxyTimeoutException.ts +25 -0
  181. package/src/exception/RequestHeaderFieldsTooLargeException.ts +25 -0
  182. package/src/exception/StatusChecker.ts +94 -0
  183. package/src/exception/TooManyRequestsException.ts +25 -0
  184. package/src/exception/UnauthorizedException.ts +25 -0
  185. package/src/exception/UnsupportedException.ts +25 -0
  186. package/src/exception/index.ts +30 -0
  187. package/src/index.ts +23 -0
  188. package/src/message/Message.ts +67 -0
  189. package/src/message/MessageId.ts +123 -0
  190. package/src/message/MessageView.ts +94 -0
  191. package/src/message/PublishingMessage.ts +104 -0
  192. package/src/message/index.ts +21 -0
  193. package/src/producer/Producer.ts +388 -0
  194. package/src/producer/PublishingLoadBalancer.ts +85 -0
  195. package/src/producer/PublishingSettings.ts +78 -0
  196. package/src/producer/RecallReceipt.ts +32 -0
  197. package/src/producer/SendReceipt.ts +63 -0
  198. package/src/producer/Transaction.ts +86 -0
  199. package/src/producer/TransactionChecker.ts +23 -0
  200. package/src/producer/index.ts +24 -0
  201. package/src/retry/ExponentialBackoffRetryPolicy.ts +76 -0
  202. package/src/retry/RetryPolicy.ts +51 -0
  203. package/src/retry/index.ts +19 -0
  204. package/src/route/Broker.ts +39 -0
  205. package/src/route/Endpoints.ts +70 -0
  206. package/src/route/MessageQueue.ts +49 -0
  207. package/src/route/TopicRouteData.ts +38 -0
  208. package/src/route/index.ts +21 -0
  209. package/src/util/index.ts +83 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * Licensed to the Apache Software Foundation (ASF) under one or more
4
+ * contributor license agreements. See the NOTICE file distributed with
5
+ * this work for additional information regarding copyright ownership.
6
+ * The ASF licenses this file to You under the Apache License, Version 2.0
7
+ * (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.Consumer = void 0;
20
+ const service_pb_1 = require("../../proto/apache/rocketmq/v2/service_pb");
21
+ const message_1 = require("../message");
22
+ const exception_1 = require("../exception");
23
+ const client_1 = require("../client");
24
+ const util_1 = require("../util");
25
+ class Consumer extends client_1.BaseClient {
26
+ consumerGroup;
27
+ constructor(options) {
28
+ super(options);
29
+ this.consumerGroup = options.consumerGroup;
30
+ }
31
+ wrapReceiveMessageRequest(batchSize, mq, filterExpression, invisibleDuration, longPollingTimeout) {
32
+ return new service_pb_1.ReceiveMessageRequest()
33
+ .setGroup((0, util_1.createResource)(this.consumerGroup))
34
+ .setMessageQueue(mq.toProtobuf())
35
+ .setFilterExpression(filterExpression.toProtobuf())
36
+ .setLongPollingTimeout((0, util_1.createDuration)(longPollingTimeout))
37
+ .setBatchSize(batchSize)
38
+ .setAutoRenew(false)
39
+ .setInvisibleDuration((0, util_1.createDuration)(invisibleDuration));
40
+ }
41
+ async receiveMessage(request, mq, awaitDuration) {
42
+ const endpoints = mq.broker.endpoints;
43
+ const timeout = this.requestTimeout + awaitDuration;
44
+ let status;
45
+ const responses = await this.rpcClientManager.receiveMessage(endpoints, request, timeout);
46
+ const messageList = [];
47
+ let transportDeliveryTimestamp;
48
+ for (const response of responses) {
49
+ switch (response.getContentCase()) {
50
+ case service_pb_1.ReceiveMessageResponse.ContentCase.STATUS:
51
+ status = response.getStatus()?.toObject();
52
+ break;
53
+ case service_pb_1.ReceiveMessageResponse.ContentCase.MESSAGE:
54
+ messageList.push(response.getMessage());
55
+ break;
56
+ case service_pb_1.ReceiveMessageResponse.ContentCase.DELIVERY_TIMESTAMP:
57
+ transportDeliveryTimestamp = response.getDeliveryTimestamp()?.toDate();
58
+ break;
59
+ default:
60
+ // this.logger.warn("[Bug] Not recognized content for receive message response, mq={}, " +
61
+ // "clientId={}, response={}", mq, clientId, response);
62
+ }
63
+ }
64
+ exception_1.StatusChecker.check(status);
65
+ const messages = messageList.map(message => new message_1.MessageView(message, mq, transportDeliveryTimestamp));
66
+ return messages;
67
+ }
68
+ async ackMessage(messageView) {
69
+ const endpoints = messageView.endpoints;
70
+ const request = new service_pb_1.AckMessageRequest()
71
+ .setGroup((0, util_1.createResource)(this.consumerGroup))
72
+ .setTopic((0, util_1.createResource)(messageView.topic));
73
+ request.addEntries()
74
+ .setMessageId(messageView.messageId)
75
+ .setReceiptHandle(messageView.receiptHandle);
76
+ const res = await this.rpcClientManager.ackMessage(endpoints, request, this.requestTimeout);
77
+ // FIXME: handle fail ack
78
+ const response = res.toObject();
79
+ exception_1.StatusChecker.check(response.status);
80
+ return response.entriesList;
81
+ }
82
+ async invisibleDuration(messageView, invisibleDuration) {
83
+ const request = new service_pb_1.ChangeInvisibleDurationRequest()
84
+ .setGroup((0, util_1.createResource)(this.consumerGroup))
85
+ .setTopic((0, util_1.createResource)(messageView.topic))
86
+ .setReceiptHandle(messageView.receiptHandle)
87
+ .setInvisibleDuration((0, util_1.createDuration)(invisibleDuration))
88
+ .setMessageId(messageView.messageId);
89
+ const res = await this.rpcClientManager.changeInvisibleDuration(messageView.endpoints, request, this.requestTimeout);
90
+ const response = res.toObject();
91
+ exception_1.StatusChecker.check(response.status);
92
+ return response.receiptHandle;
93
+ }
94
+ /**
95
+ * Expose public methods for ProcessQueue to access RPC operations
96
+ */
97
+ async ackMessageViaRpc(endpoints, request, timeout) {
98
+ const res = await this.rpcClientManager.ackMessage(endpoints, request, timeout);
99
+ return res;
100
+ }
101
+ async changeInvisibleDurationViaRpc(endpoints, request, timeout) {
102
+ const res = await this.rpcClientManager.changeInvisibleDuration(endpoints, request, timeout);
103
+ return res;
104
+ }
105
+ async forwardMessageToDeadLetterQueueViaRpc(endpoints, request, timeout) {
106
+ const res = await this.rpcClientManager.forwardMessageToDeadLetterQueue(endpoints, request, timeout);
107
+ return res;
108
+ }
109
+ }
110
+ exports.Consumer = Consumer;
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3VtZXIvQ29uc3VtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBR0gsMEVBSW1EO0FBQ25ELHdDQUF5QztBQUV6Qyw0Q0FBNkM7QUFDN0Msc0NBQTBEO0FBQzFELGtDQUF5RDtBQU96RCxNQUFzQixRQUFTLFNBQVEsbUJBQVU7SUFDNUIsYUFBYSxDQUFTO0lBRXpDLFlBQVksT0FBd0I7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFUyx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLEVBQWdCLEVBQ3JFLGdCQUFrQyxFQUFFLGlCQUF5QixFQUFFLGtCQUEwQjtRQUN6RixPQUFPLElBQUksa0NBQXFCLEVBQUU7YUFDL0IsUUFBUSxDQUFDLElBQUEscUJBQWMsRUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDNUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNoQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNsRCxxQkFBcUIsQ0FBQyxJQUFBLHFCQUFjLEVBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUN6RCxZQUFZLENBQUMsU0FBUyxDQUFDO2FBQ3ZCLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDbkIsb0JBQW9CLENBQUMsSUFBQSxxQkFBYyxFQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QixFQUFFLEVBQWdCLEVBQUUsYUFBcUI7UUFDcEcsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxD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
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { MessageView } from '../message';
18
+ import { ConsumeService } from './ConsumeService';
19
+ import { MessageListener } from './MessageListener';
20
+ import type { ProcessQueue } from './ProcessQueue';
21
+ export declare class FifoConsumeService extends ConsumeService {
22
+ #private;
23
+ constructor(clientId: string, messageListener: MessageListener, enableAccelerator?: boolean);
24
+ consume(pq: ProcessQueue, messageViews: MessageView[]): void;
25
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * Licensed to the Apache Software Foundation (ASF) under one or more
4
+ * contributor license agreements. See the NOTICE file distributed with
5
+ * this work for additional information regarding copyright ownership.
6
+ * The ASF licenses this file to You under the Apache License, Version 2.0
7
+ * (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.FifoConsumeService = void 0;
20
+ const ConsumeService_1 = require("./ConsumeService");
21
+ class FifoConsumeService extends ConsumeService_1.ConsumeService {
22
+ #enableAccelerator;
23
+ #groupProcessing = new Map();
24
+ constructor(clientId, messageListener, enableAccelerator) {
25
+ super(clientId, messageListener);
26
+ this.#enableAccelerator = enableAccelerator ?? false;
27
+ }
28
+ consume(pq, messageViews) {
29
+ if (this.#enableAccelerator) {
30
+ this.#consumeWithAccelerator(pq, messageViews);
31
+ }
32
+ else {
33
+ this.#consumeIteratively(pq, messageViews, 0);
34
+ }
35
+ }
36
+ /**
37
+ * FIFO consume accelerator mode:
38
+ * - Messages with the same messageGroup are consumed sequentially
39
+ * - Messages with different messageGroups are consumed in parallel
40
+ * - Messages without messageGroup are consumed in parallel
41
+ */
42
+ #consumeWithAccelerator(pq, messageViews) {
43
+ // Group messages by messageGroup
44
+ const groupedMessages = new Map();
45
+ const ungroupedMessages = [];
46
+ for (const messageView of messageViews) {
47
+ if (messageView.corrupted) {
48
+ pq.discardFifoMessage(messageView);
49
+ continue;
50
+ }
51
+ const messageGroup = messageView.messageGroup || '';
52
+ if (messageGroup) {
53
+ const group = groupedMessages.get(messageGroup) || [];
54
+ group.push(messageView);
55
+ groupedMessages.set(messageGroup, group);
56
+ }
57
+ else {
58
+ ungroupedMessages.push(messageView);
59
+ }
60
+ }
61
+ // Process grouped messages (each group sequentially, groups in parallel)
62
+ for (const [messageGroup, messages] of groupedMessages.entries()) {
63
+ this.#processMessageGroup(pq, messageGroup, messages);
64
+ }
65
+ // Process ungrouped messages in parallel
66
+ for (const messageView of ungroupedMessages) {
67
+ this.consumeMessage(messageView)
68
+ .then(result => pq.eraseFifoMessage(messageView, result))
69
+ .catch(() => {
70
+ // Error already logged, continue with next message
71
+ });
72
+ }
73
+ }
74
+ /**
75
+ * Process messages within the same group sequentially
76
+ */
77
+ async #processMessageGroup(pq, messageGroup, messages) {
78
+ // Check if there's already processing happening for this group
79
+ const existingPromise = this.#groupProcessing.get(messageGroup);
80
+ const processTask = (async () => {
81
+ // Wait for previous processing to complete if any
82
+ if (existingPromise) {
83
+ await existingPromise.catch(() => {
84
+ // Ignore previous errors, continue processing
85
+ });
86
+ }
87
+ // Process messages in sequence
88
+ for (const messageView of messages) {
89
+ try {
90
+ const result = await this.consumeMessage(messageView);
91
+ await pq.eraseFifoMessage(messageView, result);
92
+ }
93
+ catch (error) {
94
+ console.error('Failed to process FIFO message, messageGroup=%s, messageId=%s', messageGroup, messageView.messageId, error);
95
+ // Continue with next message even if current fails
96
+ }
97
+ }
98
+ })();
99
+ // Store the promise for this group
100
+ this.#groupProcessing.set(messageGroup, processTask);
101
+ // Clean up when done
102
+ processTask.finally(() => {
103
+ this.#groupProcessing.delete(messageGroup);
104
+ });
105
+ }
106
+ #consumeIteratively(pq, messageViews, index) {
107
+ if (index >= messageViews.length) {
108
+ return;
109
+ }
110
+ const messageView = messageViews[index];
111
+ if (messageView.corrupted) {
112
+ pq.discardFifoMessage(messageView);
113
+ this.#consumeIteratively(pq, messageViews, index + 1);
114
+ return;
115
+ }
116
+ this.consumeMessage(messageView)
117
+ .then(result => pq.eraseFifoMessage(messageView, result))
118
+ .then(() => this.#consumeIteratively(pq, messageViews, index + 1))
119
+ .catch(() => this.#consumeIteratively(pq, messageViews, index + 1));
120
+ }
121
+ }
122
+ exports.FifoConsumeService = FifoConsumeService;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlmb0NvbnN1bWVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN1bWVyL0ZpZm9Db25zdW1lU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFHSCxxREFBa0Q7QUFJbEQsTUFBYSxrQkFBbUIsU0FBUSwrQkFBYztJQUMzQyxrQkFBa0IsQ0FBVTtJQUM1QixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztJQUVoRixZQUFZLFFBQWdCLEVBQUUsZUFBZ0MsRUFBRSxpQkFBMkI7UUFDekYsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLElBQUksS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxPQUFPLENBQUMsRUFBZ0IsRUFBRSxZQUEyQjtRQUNuRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsdUJBQXVCLENBQUMsRUFBZ0IsRUFBRSxZQUEyQjtRQUNuRSxpQ0FBaUM7UUFDakMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDekQsTUFBTSxpQkFBaUIsR0FBa0IsRUFBRSxDQUFDO1FBRTVDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdkMsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbkMsU0FB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
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { FilterType, FilterExpression as FilterExpressionPB } from '../../proto/apache/rocketmq/v2/definition_pb';
18
+ export declare class FilterExpression {
19
+ static readonly SUB_ALL: FilterExpression;
20
+ readonly expression: string;
21
+ readonly filterType: FilterType;
22
+ constructor(expression: string, filterType?: FilterType);
23
+ toProtobuf(): FilterExpressionPB;
24
+ toString(): string;
25
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Licensed to the Apache Software Foundation (ASF) under one or more
4
+ * contributor license agreements. See the NOTICE file distributed with
5
+ * this work for additional information regarding copyright ownership.
6
+ * The ASF licenses this file to You under the Apache License, Version 2.0
7
+ * (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.FilterExpression = void 0;
20
+ const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb");
21
+ const TAG_EXPRESSION_SUB_ALL = '*';
22
+ class FilterExpression {
23
+ static SUB_ALL = new FilterExpression(TAG_EXPRESSION_SUB_ALL);
24
+ expression;
25
+ filterType;
26
+ constructor(expression, filterType = definition_pb_1.FilterType.TAG) {
27
+ this.expression = expression;
28
+ this.filterType = filterType;
29
+ }
30
+ toProtobuf() {
31
+ return new definition_pb_1.FilterExpression()
32
+ .setType(this.filterType)
33
+ .setExpression(this.expression);
34
+ }
35
+ toString() {
36
+ return `FilterExpression(${this.filterType},${this.expression})`;
37
+ }
38
+ }
39
+ exports.FilterExpression = FilterExpression;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsdGVyRXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdW1lci9GaWx0ZXJFeHByZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7OztBQUVILGdGQUFrSDtBQUVsSCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUVuQyxNQUFhLGdCQUFnQjtJQUMzQixNQUFNLENBQVUsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU5RCxVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFhO0lBRWhDLFlBQVksVUFBa0IsRUFBRSxVQUFVLEdBQUcsMEJBQVUsQ0FBQyxHQUFHO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLGdDQUFrQixFQUFFO2FBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3hCLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLG9CQUFvQixJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQztJQUNuRSxDQUFDOztBQW5CSCw0Q0FvQkMifQ==
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { MessageView } from '../message';
18
+ import { ConsumeResult } from './ConsumeResult';
19
+ export interface MessageListener {
20
+ consume(messageView: MessageView): ConsumeResult | Promise<ConsumeResult>;
21
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * Licensed to the Apache Software Foundation (ASF) under one or more
4
+ * contributor license agreements. See the NOTICE file distributed with
5
+ * this work for additional information regarding copyright ownership.
6
+ * The ASF licenses this file to You under the Apache License, Version 2.0
7
+ * (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZUxpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN1bWVyL01lc3NhZ2VMaXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHIn0=
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { MessageView } from '../message';
18
+ import { MessageQueue } from '../route';
19
+ import { ConsumeResult } from './ConsumeResult';
20
+ import { FilterExpression } from './FilterExpression';
21
+ import type { PushConsumer } from './PushConsumer';
22
+ export declare class ProcessQueue {
23
+ #private;
24
+ constructor(consumer: PushConsumer, mq: MessageQueue, filterExpression: FilterExpression);
25
+ getMessageQueue(): MessageQueue;
26
+ drop(): void;
27
+ expired(): boolean;
28
+ cacheMessages(messageList: MessageView[]): void;
29
+ fetchMessageImmediately(): void;
30
+ onReceiveMessageException(t: Error, attemptId?: string): void;
31
+ receiveMessage(attemptId?: string): void;
32
+ eraseMessage(messageView: MessageView, consumeResult: ConsumeResult): void;
33
+ eraseFifoMessage(messageView: MessageView, consumeResult: ConsumeResult): Promise<void>;
34
+ discardMessage(messageView: MessageView): void;
35
+ discardFifoMessage(messageView: MessageView): void;
36
+ cachedMessagesCount(): number;
37
+ cachedMessageBytes(): number;
38
+ abort(): void;
39
+ }