@midwayjs/kafka 3.18.0 → 3.19.0

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.
@@ -1,4 +1,3 @@
1
1
  export declare class KafkaConfiguration {
2
- onReady(): Promise<void>;
3
2
  }
4
3
  //# sourceMappingURL=configuration.d.ts.map
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.KafkaConfiguration = void 0;
10
10
  const core_1 = require("@midwayjs/core");
11
11
  let KafkaConfiguration = class KafkaConfiguration {
12
- async onReady() { }
13
12
  };
14
13
  KafkaConfiguration = __decorate([
15
14
  (0, core_1.Configuration)({
@@ -17,7 +16,16 @@ KafkaConfiguration = __decorate([
17
16
  importConfigs: [
18
17
  {
19
18
  default: {
20
- kafka: {},
19
+ kafka: {
20
+ contextLoggerApplyLogger: 'kafkaLogger',
21
+ },
22
+ midwayLogger: {
23
+ clients: {
24
+ kafkaLogger: {
25
+ fileLogName: 'midway-kafka.log',
26
+ },
27
+ },
28
+ },
21
29
  },
22
30
  },
23
31
  ],
@@ -0,0 +1,3 @@
1
+ export declare const KAFKA_DECORATOR_KEY = "rpc:kafka";
2
+ export declare function KafkaConsumer(consumerName: string): ClassDecorator;
3
+ //# sourceMappingURL=decorator.d.ts.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KafkaConsumer = exports.KAFKA_DECORATOR_KEY = void 0;
4
+ const core_1 = require("@midwayjs/core");
5
+ exports.KAFKA_DECORATOR_KEY = 'rpc:kafka';
6
+ function KafkaConsumer(consumerName) {
7
+ return target => {
8
+ (0, core_1.saveModule)(exports.KAFKA_DECORATOR_KEY, target);
9
+ (0, core_1.saveClassMetadata)(exports.KAFKA_DECORATOR_KEY, consumerName, target);
10
+ (0, core_1.Scope)(core_1.ScopeEnum.Request)(target);
11
+ (0, core_1.Provide)()(target);
12
+ };
13
+ }
14
+ exports.KafkaConsumer = KafkaConsumer;
15
+ //# sourceMappingURL=decorator.js.map
@@ -1,10 +1,16 @@
1
- import { BaseFramework, MidwayFrameworkType } from '@midwayjs/core';
2
- import { IMidwayKafkaContext } from './interface';
1
+ import { BaseFramework, MidwayFrameworkType, ILogger, TypedResourceManager } from '@midwayjs/core';
2
+ import { IKafkaConsumerInitOptions, IKafkaConsumer, IMidwayKafkaContext } from './interface';
3
+ import { Kafka, Consumer } from 'kafkajs';
3
4
  export declare class MidwayKafkaFramework extends BaseFramework<any, IMidwayKafkaContext, any> {
5
+ protected LogCreator: any;
6
+ protected typedResourceManager: TypedResourceManager<Consumer, IKafkaConsumerInitOptions, IKafkaConsumer>;
4
7
  configure(): any;
8
+ kafKaLogger: ILogger;
5
9
  applicationInitialize(): Promise<void>;
6
10
  run(): Promise<void>;
7
- private loadSubscriber;
11
+ private loadLegacySubscriber;
12
+ getConsumer(subscriberNameOrInstanceName: string): any;
13
+ getKafka(instanceName: string): Kafka;
8
14
  getFrameworkName(): string;
9
15
  protected beforeStop(): Promise<void>;
10
16
  getFrameworkType(): MidwayFrameworkType;
package/dist/framework.js CHANGED
@@ -5,33 +5,131 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  exports.MidwayKafkaFramework = void 0;
10
13
  const core_1 = require("@midwayjs/core");
11
14
  const kafka_1 = require("./kafka");
15
+ const decorator_1 = require("./decorator");
16
+ const kafkajs_1 = require("kafkajs");
17
+ const manager_1 = require("./manager");
18
+ const toMidwayLogLevel = level => {
19
+ switch (level) {
20
+ case kafkajs_1.logLevel.NOTHING:
21
+ return 'none';
22
+ case kafkajs_1.logLevel.ERROR:
23
+ return 'error';
24
+ case kafkajs_1.logLevel.WARN:
25
+ return 'warn';
26
+ case kafkajs_1.logLevel.INFO:
27
+ return 'info';
28
+ case kafkajs_1.logLevel.DEBUG:
29
+ return 'debug';
30
+ }
31
+ };
12
32
  let MidwayKafkaFramework = class MidwayKafkaFramework extends core_1.BaseFramework {
13
33
  configure() {
14
34
  return this.configService.getConfiguration('kafka');
15
35
  }
16
36
  async applicationInitialize() {
37
+ this.LogCreator = logLevel => {
38
+ const logger = this.kafKaLogger;
39
+ return ({ level, log }) => {
40
+ const lvl = toMidwayLogLevel(level);
41
+ const { message, ...extra } = log;
42
+ logger === null || logger === void 0 ? void 0 : logger[lvl](message, extra);
43
+ };
44
+ };
17
45
  // Create a connection manager
18
- this.app = new kafka_1.KafkaConsumerServer({
19
- logger: this.logger,
20
- ...this.configurationOptions,
21
- });
46
+ if (this.configurationOptions['kafkaConfig']) {
47
+ this.app = new kafka_1.KafkaConsumerServer({
48
+ logger: this.kafKaLogger,
49
+ ...this.configurationOptions,
50
+ });
51
+ }
52
+ else {
53
+ this.app = {};
54
+ }
22
55
  }
23
56
  async run() {
24
- try {
25
- await this.app.connect(this.configurationOptions.kafkaConfig, this.configurationOptions.consumerConfig);
26
- await this.loadSubscriber();
27
- this.logger.info('Kafka consumer server start success');
57
+ if (this.configurationOptions['kafkaConfig']) {
58
+ try {
59
+ await this.app.connect(this.configurationOptions.kafkaConfig, this.configurationOptions.consumerConfig);
60
+ await this.loadLegacySubscriber();
61
+ this.kafKaLogger.info('Kafka consumer server start success');
62
+ }
63
+ catch (error) {
64
+ this.kafKaLogger.error('Kafka consumer connect fail', error);
65
+ await this.app.closeConnection();
66
+ }
28
67
  }
29
- catch (error) {
30
- this.logger.error('Kafka consumer connect fail', error);
31
- await this.app.closeConnection();
68
+ else {
69
+ const { consumer } = this.configurationOptions;
70
+ if (!consumer)
71
+ return;
72
+ const subscriberMap = {};
73
+ // find subscriber
74
+ const subscriberModules = (0, core_1.listModule)(decorator_1.KAFKA_DECORATOR_KEY);
75
+ for (const subscriberModule of subscriberModules) {
76
+ const subscriberName = (0, core_1.getClassMetadata)(decorator_1.KAFKA_DECORATOR_KEY, subscriberModule);
77
+ subscriberMap[subscriberName] = subscriberModule;
78
+ }
79
+ this.typedResourceManager = new core_1.TypedResourceManager({
80
+ initializeValue: consumer,
81
+ initializeClzProvider: subscriberMap,
82
+ resourceInitialize: async (resourceInitializeConfig, resourceName) => {
83
+ let client;
84
+ if (resourceInitializeConfig.kafkaInstanceRef) {
85
+ client = manager_1.KafkaManager.getInstance().getKafkaInstance(resourceInitializeConfig.kafkaInstanceRef);
86
+ if (!client) {
87
+ throw new core_1.MidwayCommonError(`kafka instance ${resourceInitializeConfig.kafkaInstanceRef} not found`);
88
+ }
89
+ }
90
+ else {
91
+ client = new kafkajs_1.Kafka({
92
+ logCreator: this.LogCreator,
93
+ ...resourceInitializeConfig.connectionOptions,
94
+ });
95
+ manager_1.KafkaManager.getInstance().addKafkaInstance(resourceName, client);
96
+ }
97
+ const consumer = client.consumer(resourceInitializeConfig.consumerOptions);
98
+ await consumer.connect();
99
+ await consumer.subscribe(resourceInitializeConfig.subscribeOptions);
100
+ return consumer;
101
+ },
102
+ resourceBinding: async (ClzProvider, resourceInitializeConfig, consumer) => {
103
+ const runMethod = ClzProvider.prototype['eachBatch']
104
+ ? 'eachBatch'
105
+ : 'eachMessage';
106
+ const runConfig = {
107
+ ...resourceInitializeConfig.consumerRunConfig,
108
+ };
109
+ runConfig[runMethod] = async (payload) => {
110
+ const ctx = this.app.createAnonymousContext();
111
+ const fn = await this.applyMiddleware(async (ctx) => {
112
+ ctx.payload = payload;
113
+ ctx.consumer = consumer;
114
+ const instance = await ctx.requestContext.getAsync(ClzProvider);
115
+ return await instance[runMethod].call(instance, payload, ctx);
116
+ });
117
+ return await fn(ctx);
118
+ };
119
+ return runConfig;
120
+ },
121
+ resourceStart: async (resource, resourceInitializeConfig, resourceBindingResult) => {
122
+ await resource.run(resourceBindingResult);
123
+ },
124
+ resourceDestroy: async (resource) => {
125
+ await resource.disconnect();
126
+ },
127
+ });
128
+ await this.typedResourceManager.init();
129
+ await this.typedResourceManager.start();
32
130
  }
33
131
  }
34
- async loadSubscriber() {
132
+ async loadLegacySubscriber() {
35
133
  const subscriberModules = (0, core_1.listModule)(core_1.MS_CONSUMER_KEY, module => {
36
134
  const metadata = (0, core_1.getClassMetadata)(core_1.MS_CONSUMER_KEY, module);
37
135
  return metadata.type === core_1.MSListenerType.KAFKA;
@@ -62,7 +160,8 @@ let MidwayKafkaFramework = class MidwayKafkaFramework extends core_1.BaseFramewo
62
160
  topics: topicTitles,
63
161
  }, e.subscription));
64
162
  await this.app.connection.run(Object.assign(e.runConfig, {
65
- eachMessage: async ({ topic, partition, message }) => {
163
+ eachMessage: async (payload) => {
164
+ const { topic, partition, message } = payload;
66
165
  let propertyKey;
67
166
  for (const methodBindListeners of data) {
68
167
  for (const listenerOptions of methodBindListeners) {
@@ -81,6 +180,8 @@ let MidwayKafkaFramework = class MidwayKafkaFramework extends core_1.BaseFramewo
81
180
  },
82
181
  ]);
83
182
  },
183
+ payload,
184
+ consumer: this.app.connection,
84
185
  };
85
186
  this.app.createAnonymousContext(ctx);
86
187
  if (typeof propertyKey === 'string') {
@@ -121,16 +222,30 @@ let MidwayKafkaFramework = class MidwayKafkaFramework extends core_1.BaseFramewo
121
222
  });
122
223
  }
123
224
  }
225
+ getConsumer(subscriberNameOrInstanceName) {
226
+ if (this.typedResourceManager) {
227
+ return this.typedResourceManager.getResource(subscriberNameOrInstanceName);
228
+ }
229
+ }
230
+ getKafka(instanceName) {
231
+ return manager_1.KafkaManager.getInstance().getKafkaInstance(instanceName);
232
+ }
124
233
  getFrameworkName() {
125
234
  return 'midway:kafka';
126
235
  }
127
236
  async beforeStop() {
128
- await this.app.close();
237
+ if (this.typedResourceManager) {
238
+ await this.typedResourceManager.destroy();
239
+ }
129
240
  }
130
241
  getFrameworkType() {
131
242
  return core_1.MidwayFrameworkType.MS_KAFKA;
132
243
  }
133
244
  };
245
+ __decorate([
246
+ (0, core_1.Logger)('kafkaLogger'),
247
+ __metadata("design:type", Object)
248
+ ], MidwayKafkaFramework.prototype, "kafKaLogger", void 0);
134
249
  MidwayKafkaFramework = __decorate([
135
250
  (0, core_1.Framework)()
136
251
  ], MidwayKafkaFramework);
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import * as Kafkajs from 'kafkajs';
1
+ import * as KafkaJS from 'kafkajs';
2
2
  export { MidwayKafkaFramework as Framework } from './framework';
3
- export * from './interface';
4
3
  export { KafkaConfiguration as Configuration } from './configuration';
5
- export { Kafkajs };
4
+ export * from './interface';
5
+ export * from './decorator';
6
+ export * from './service';
7
+ export { KafkaJS };
6
8
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -14,12 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Kafkajs = exports.Configuration = exports.Framework = void 0;
18
- const Kafkajs = require("kafkajs");
19
- exports.Kafkajs = Kafkajs;
17
+ exports.KafkaJS = exports.Configuration = exports.Framework = void 0;
18
+ const KafkaJS = require("kafkajs");
19
+ exports.KafkaJS = KafkaJS;
20
20
  var framework_1 = require("./framework");
21
21
  Object.defineProperty(exports, "Framework", { enumerable: true, get: function () { return framework_1.MidwayKafkaFramework; } });
22
- __exportStar(require("./interface"), exports);
23
22
  var configuration_1 = require("./configuration");
24
23
  Object.defineProperty(exports, "Configuration", { enumerable: true, get: function () { return configuration_1.KafkaConfiguration; } });
24
+ __exportStar(require("./interface"), exports);
25
+ __exportStar(require("./decorator"), exports);
26
+ __exportStar(require("./service"), exports);
25
27
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,27 @@
1
- import { IConfigurationOptions, IMidwayApplication, IMidwayContext, NextFunction as BaseNextFunction } from '@midwayjs/core';
2
- import { Kafka, KafkaConfig } from 'kafkajs';
1
+ import { IConfigurationOptions, IMidwayApplication, IMidwayContext, NextFunction as BaseNextFunction, ServiceFactoryConfigOption } from "@midwayjs/core";
2
+ import { AdminConfig, Consumer, ConsumerConfig, ConsumerRunConfig, ConsumerSubscribeTopic, ConsumerSubscribeTopics, EachBatchHandler, EachBatchPayload, EachMessageHandler, EachMessagePayload, Kafka, KafkaConfig, ProducerConfig } from 'kafkajs';
3
3
  export interface IKafkaApplication {
4
4
  }
5
5
  export type IMidwayKafkaApplication = IMidwayApplication<IMidwayKafkaContext> & IKafkaApplication;
6
- export interface IMidwayKafkaConfigurationOptions extends IConfigurationOptions, KafkaConfig {
7
- }
8
6
  export type IMidwayKafkaContext = IMidwayContext<{
9
- topic: any;
10
- partition: any;
11
- message: any;
12
- commitOffsets(data: any): void;
7
+ /**
8
+ * @deprecated please use `ctx.payload` instead
9
+ */
10
+ topic?: any;
11
+ /**
12
+ * @deprecated please use `ctx.payload` instead
13
+ */
14
+ partition?: any;
15
+ /**
16
+ * @deprecated please use `ctx.payload` instead
17
+ */
18
+ message?: any;
19
+ /**
20
+ * @deprecated please use `ctx.consumer.commitOffsets` instead
21
+ */
22
+ commitOffsets?(data: any): void;
23
+ payload: EachMessagePayload | EachBatchPayload;
24
+ consumer: Consumer;
13
25
  }>;
14
26
  export type Application = IMidwayKafkaApplication;
15
27
  export interface Context extends IMidwayKafkaContext {
@@ -18,10 +30,57 @@ export type NextFunction = BaseNextFunction;
18
30
  export type DefaultConfig = string | Kafka;
19
31
  /**
20
32
  * 客户端的相关配置,在midwayjs的自定义配置项
33
+ * @deprecated
21
34
  */
22
35
  export interface IMidwayConsumerConfig {
23
36
  topic: string;
24
37
  subscription: any;
25
38
  runConfig: any;
26
39
  }
40
+ /**
41
+ * The options for the kafka consumer initialization in midway
42
+ */
43
+ export interface IKafkaConsumerInitOptions {
44
+ /**
45
+ * The connection options for the kafka instance
46
+ */
47
+ connectionOptions: KafkaConfig;
48
+ /**
49
+ * The consumer options for the kafka consumer
50
+ */
51
+ consumerOptions: ConsumerConfig;
52
+ subscribeOptions: ConsumerSubscribeTopics | ConsumerSubscribeTopic;
53
+ consumerRunConfig: ConsumerRunConfig;
54
+ kafkaInstanceRef?: string;
55
+ }
56
+ /**
57
+ * The options for the kafka producer initialization in midway
58
+ */
59
+ export interface IMidwayKafkaProducerInitOptions {
60
+ connectionOptions: KafkaConfig;
61
+ producerOptions: ProducerConfig;
62
+ kafkaInstanceRef?: string;
63
+ }
64
+ /**
65
+ * The options for the kafka admin initialization in midway
66
+ */
67
+ export interface IMidwayKafkaAdminInitOptions {
68
+ kafkaInstanceRef?: string;
69
+ connectionOptions: KafkaConfig;
70
+ /**
71
+ * The options for the kafka admin initialization
72
+ */
73
+ adminOptions: AdminConfig;
74
+ }
75
+ export interface IMidwayKafkaConfigurationOptions extends IConfigurationOptions {
76
+ consumer: {
77
+ [name: string]: Partial<IKafkaConsumerInitOptions>;
78
+ };
79
+ producer: ServiceFactoryConfigOption<Partial<IMidwayKafkaProducerInitOptions>>;
80
+ admin: ServiceFactoryConfigOption<Partial<IMidwayKafkaAdminInitOptions>>;
81
+ }
82
+ export interface IKafkaConsumer {
83
+ eachBatch?: EachBatchHandler;
84
+ eachMessage?: EachMessageHandler;
85
+ }
27
86
  //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { Kafka } from 'kafkajs';
2
+ export declare class KafkaManager {
3
+ private kafkaInstanceMap;
4
+ private static instance;
5
+ private constructor();
6
+ getKafkaInstance(name: string): Kafka;
7
+ addKafkaInstance(name: string, kafka: Kafka): void;
8
+ static getInstance(): KafkaManager;
9
+ }
10
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KafkaManager = void 0;
4
+ class KafkaManager {
5
+ constructor() {
6
+ this.kafkaInstanceMap = new Map();
7
+ }
8
+ getKafkaInstance(name) {
9
+ return this.kafkaInstanceMap.get(name);
10
+ }
11
+ addKafkaInstance(name, kafka) {
12
+ this.kafkaInstanceMap.set(name, kafka);
13
+ }
14
+ static getInstance() {
15
+ if (!this.instance) {
16
+ this.instance = new KafkaManager();
17
+ }
18
+ return this.instance;
19
+ }
20
+ }
21
+ exports.KafkaManager = KafkaManager;
22
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1,22 @@
1
+ import { ILogger, ServiceFactory, ServiceFactoryConfigOption } from '@midwayjs/core';
2
+ import { Producer, Admin } from 'kafkajs';
3
+ import { IMidwayKafkaAdminInitOptions, IMidwayKafkaProducerInitOptions } from './interface';
4
+ export declare class KafkaProducerFactory extends ServiceFactory<Producer> {
5
+ logger: ILogger;
6
+ pubConfig: ServiceFactoryConfigOption<IMidwayKafkaProducerInitOptions>;
7
+ getName(): string;
8
+ init(): Promise<void>;
9
+ protected createClient(config: IMidwayKafkaProducerInitOptions, clientName: any): Promise<Producer>;
10
+ destroyClient(producer: Producer, name: string): Promise<void>;
11
+ destroy(): Promise<void>;
12
+ }
13
+ export declare class KafkaAdminFactory extends ServiceFactory<Admin> {
14
+ logger: ILogger;
15
+ adminConfig: ServiceFactoryConfigOption<IMidwayKafkaProducerInitOptions>;
16
+ getName(): string;
17
+ init(): Promise<void>;
18
+ protected createClient(config: IMidwayKafkaAdminInitOptions, clientName: any): Promise<Admin>;
19
+ destroyClient(admin: Admin, name: string): Promise<void>;
20
+ destroy(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KafkaAdminFactory = exports.KafkaProducerFactory = void 0;
13
+ const core_1 = require("@midwayjs/core");
14
+ const kafkajs_1 = require("kafkajs");
15
+ const manager_1 = require("./manager");
16
+ let KafkaProducerFactory = class KafkaProducerFactory extends core_1.ServiceFactory {
17
+ getName() {
18
+ return 'kafka:producer';
19
+ }
20
+ async init() {
21
+ await this.initClients(this.pubConfig);
22
+ }
23
+ async createClient(config, clientName) {
24
+ const { connectionOptions, producerOptions, kafkaInstanceRef } = config;
25
+ let client;
26
+ if (kafkaInstanceRef) {
27
+ client = manager_1.KafkaManager.getInstance().getKafkaInstance(kafkaInstanceRef);
28
+ if (!client) {
29
+ throw new core_1.MidwayCommonError(`[midway:kafka] kafka instance ${kafkaInstanceRef} not found`);
30
+ }
31
+ }
32
+ else {
33
+ client = new kafkajs_1.Kafka(connectionOptions);
34
+ manager_1.KafkaManager.getInstance().addKafkaInstance(kafkaInstanceRef, client);
35
+ }
36
+ const producer = client.producer(producerOptions);
37
+ producer.on('producer.connect', () => {
38
+ this.logger.info('[midway:kafka] producer: %s is connect', clientName);
39
+ });
40
+ await producer.connect();
41
+ return producer;
42
+ }
43
+ async destroyClient(producer, name) {
44
+ await producer.disconnect();
45
+ this.logger.info('[midway:kafka] producer: %s is close', name);
46
+ }
47
+ async destroy() {
48
+ await super.stop();
49
+ }
50
+ };
51
+ __decorate([
52
+ (0, core_1.Logger)('kafkaLogger'),
53
+ __metadata("design:type", Object)
54
+ ], KafkaProducerFactory.prototype, "logger", void 0);
55
+ __decorate([
56
+ (0, core_1.Config)('kafka.producer'),
57
+ __metadata("design:type", Object)
58
+ ], KafkaProducerFactory.prototype, "pubConfig", void 0);
59
+ __decorate([
60
+ (0, core_1.Init)(),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", []),
63
+ __metadata("design:returntype", Promise)
64
+ ], KafkaProducerFactory.prototype, "init", null);
65
+ __decorate([
66
+ (0, core_1.Destroy)(),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", []),
69
+ __metadata("design:returntype", Promise)
70
+ ], KafkaProducerFactory.prototype, "destroy", null);
71
+ KafkaProducerFactory = __decorate([
72
+ (0, core_1.Singleton)()
73
+ ], KafkaProducerFactory);
74
+ exports.KafkaProducerFactory = KafkaProducerFactory;
75
+ let KafkaAdminFactory = class KafkaAdminFactory extends core_1.ServiceFactory {
76
+ getName() {
77
+ return 'kafka:admin';
78
+ }
79
+ async init() {
80
+ await this.initClients(this.adminConfig);
81
+ }
82
+ async createClient(config, clientName) {
83
+ const { connectionOptions, adminOptions, kafkaInstanceRef } = config;
84
+ let client;
85
+ if (kafkaInstanceRef) {
86
+ client = manager_1.KafkaManager.getInstance().getKafkaInstance(kafkaInstanceRef);
87
+ if (!client) {
88
+ throw new core_1.MidwayCommonError(`[midway:kafka] kafka instance ${kafkaInstanceRef} not found`);
89
+ }
90
+ }
91
+ else {
92
+ client = new kafkajs_1.Kafka(connectionOptions);
93
+ manager_1.KafkaManager.getInstance().addKafkaInstance(kafkaInstanceRef, client);
94
+ }
95
+ const admin = client.admin(adminOptions);
96
+ await admin.connect();
97
+ return admin;
98
+ }
99
+ async destroyClient(admin, name) {
100
+ await admin.disconnect();
101
+ this.logger.info('[midway:kafka] admin: %s is close', name);
102
+ }
103
+ async destroy() {
104
+ await super.stop();
105
+ }
106
+ };
107
+ __decorate([
108
+ (0, core_1.Logger)('kafkaLogger'),
109
+ __metadata("design:type", Object)
110
+ ], KafkaAdminFactory.prototype, "logger", void 0);
111
+ __decorate([
112
+ (0, core_1.Config)('kafka.admin'),
113
+ __metadata("design:type", Object)
114
+ ], KafkaAdminFactory.prototype, "adminConfig", void 0);
115
+ __decorate([
116
+ (0, core_1.Init)(),
117
+ __metadata("design:type", Function),
118
+ __metadata("design:paramtypes", []),
119
+ __metadata("design:returntype", Promise)
120
+ ], KafkaAdminFactory.prototype, "init", null);
121
+ __decorate([
122
+ (0, core_1.Destroy)(),
123
+ __metadata("design:type", Function),
124
+ __metadata("design:paramtypes", []),
125
+ __metadata("design:returntype", Promise)
126
+ ], KafkaAdminFactory.prototype, "destroy", null);
127
+ KafkaAdminFactory = __decorate([
128
+ (0, core_1.Singleton)()
129
+ ], KafkaAdminFactory);
130
+ exports.KafkaAdminFactory = KafkaAdminFactory;
131
+ //# sourceMappingURL=service.js.map
package/index.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { IMidwayKafkaConfigurationOptions } from './dist';
2
2
  export * from './dist/index';
3
+ export {
4
+ EachMessagePayload,
5
+ EachBatchPayload,
6
+ Consumer,
7
+ Kafka,
8
+ Producer,
9
+ Admin,
10
+ } from 'kafkajs';
3
11
 
4
12
  declare module '@midwayjs/core/dist/interface' {
5
13
  interface MidwayConfig {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midwayjs/kafka",
3
- "version": "3.18.0",
3
+ "version": "3.19.0",
4
4
  "description": "Midway Framework for kafka",
5
5
  "main": "dist/index.js",
6
6
  "typings": "index.d.ts",
@@ -33,8 +33,8 @@
33
33
  },
34
34
  "homepage": "https://github.com/midwayjs/midway#readme",
35
35
  "devDependencies": {
36
- "@midwayjs/core": "^3.18.0",
37
- "@midwayjs/mock": "^3.18.0"
36
+ "@midwayjs/core": "^3.19.0",
37
+ "@midwayjs/mock": "^3.19.0"
38
38
  },
39
39
  "dependencies": {
40
40
  "kafkajs": "2.2.4"
@@ -42,5 +42,5 @@
42
42
  "engines": {
43
43
  "node": ">=12"
44
44
  },
45
- "gitHead": "5e6180ba0fabe1acc6df112c68855129a534e941"
45
+ "gitHead": "437e92d9375b0e375f83aa363f3e6a60187c7109"
46
46
  }