My Micro Gateway seems to be calling my plugin multiple times on startup and when requests come through. I added a console.log to the beginning of one of the sample plugins in the Apigee tutorials and its printing 8 times:
'use strict';
var debug = require('debug')('plugin:response-override');
console.log("Before");
module.exports.init = function(config, logger, stats) {
console.log("after");
return {
ondata_response: function(req, res, data, next) {
debug('***** plugin ondata_response');
next(null, null);
},
onend_response: function(req, res, data, next) {
debug('***** plugin onend_response');
next(null, "#Overwriting Response\n\n");
}
};
}
This is what it prints when the gateway starts
Before
after
Before
after
Before
after
Before
after
Before
after
Before
after
Before
after
Before
after
Solved! Go to Solution.
Microgateway runs is a cluster mode. By default there is a worker process for each CPU. Each worker process loads/instantiates the plugins. So yes plugins are loaded multiple times.
Microgateway runs is a cluster mode. By default there is a worker process for each CPU. Each worker process loads/instantiates the plugins. So yes plugins are loaded multiple times.
Is there a way to have a leader worker node so parts of a plugin wouldn't be run by each worker? My plugin is querying a service discovery app and loading a variable to be used by requests, but when the code runs its running on all workers, and i end up with the same query results 8 times in my variable. Ideally this query would only be run by 1 node, but requests could hit any.
Actually i think my question above is invalid. The way i was logging things it looked like my variable had 8 copies of the data, but i think it was each worker logging its single copy of the data sequentially.
Thank you for clarifying!
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |