本文整理汇总了TypeScript中events.EventEmitter.createRawConsumer方法的典型用法代码示例。如果您正苦于以下问题:TypeScript EventEmitter.createRawConsumer方法的具体用法?TypeScript EventEmitter.createRawConsumer怎么用?TypeScript EventEmitter.createRawConsumer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类events.EventEmitter
的用法示例。
在下文中一共展示了EventEmitter.createRawConsumer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: function
channelManager.findOrCreateConsumer = function (topic, options) {
let channel = consumersByTopic[topic];
if (channel) return channel;
let isServiceChannel = (topic[0] === "_");
channel = consumersByTopic[topic] = new EventEmitter();
channel.raw = channelManager.createRawConsumer(topic, options);
channel.setMaxListeners(0);
let autoConfirm;
if (options && "autoConfirm" in options) {
autoConfirm = options.autoConfirm;
} else {
autoConfirm = adapterConfig && adapterConfig.autoConfirm;
}
// TODO: is it ok to add custom methods to EventEmitter?
channel.onceConsuming = (channel.raw.onceConsuming) ? function (cb) {
channel.raw.onceConsuming(cb);
return channel;
} : noopCb;
channel.rejectMessage = (channel.raw.rejectMessage) ? function (message) {
channel.raw.rejectMessage(message);
} : noop__;
channel.confirmProcessedMessage = (channel.raw.confirmProcessedMessage) ? function (message, _safe) {
// Only use _safe if you can"t know whether message has already been confirmed/rejected
channel.raw.confirmProcessedMessage(message, _safe);
} : noop__;
function onMessage(message) {
if (messageHasExpired(message)) {
channel.rejectMessage(message);
return;
}
channelManager.emit(channelManager.CONSUMER_NEW_MESSAGE_EVENT, topic);
// TODO: emit custom object rather than instance of EventEmitter
channel.emit("message", message, channel);
if (autoConfirm) channel.confirmProcessedMessage(message, true);
}
function onValidationError(err, message) {
channel.rejectMessage(message);
}
// Validate with envelope schema
if (!isServiceChannel && config.schema) {
channel.raw.on("message", validateWithSchema.onEvent(config.schema, onMessage, onValidationError));
} else {
channel.raw.on("message", onMessage);
}
channel.on("error", function (err, message) {
if (autoConfirm && message) {
// Reject when a message has generated an error, e.g. not validated
channel.rejectMessage(message);
}
});
channel.raw.on("error", channel.emit.bind(channel, "error")); // TODO: wtf?
// channel.raw.on("consuming", channel.emit("consuming"));
channelManager.emit(channelManager.CONSUMER_NEW_TOPIC_EVENT, topic);
if (isServiceChannel || !config.cleanupConsumers) return channel;
channel.on("removeListener", function (eventName) {
if (eventName !== "message") return;
if (consumerTopicsToCheck.indexOf(topic) > -1 || channel.listeners(eventName).length) return;
consumerTopicsToCheck.push(topic);
if (consumerTopicsToCheck.length > 1) return;
setImmediate(checkConsumers);
});
return channel;
};