4.2. 定义回退功能的应用程序代码示例
本例基于 greeting-service,它向可能失败的远程 name-service 发送调用。本例演示了如何定义将以下消息输出到 Web 控制台的回退功能: This is fallback function。
...
// Import the circuit breaker add-on
const Opossum = require('@redhat/opossum');
...
// Create a new circuit breaker instance and pass the
// remote nameService as its first parameter
const circuit = new Opossum(nameService, circuitOptions);
// Define a fallback function that will be called when
// the remote nameService fails
function fallback(result) {
console.log('This is the fallback function', result);
}
// Use the circuit breaker's fallback method to add the
// fallback function to the circuit breaker instance
circuit.fallback(fallback);
...
// Greeting API
app.get('/api/greeting', (request, response) => {
// Use the circuit breaker’s fire method to execute the call
// to the name service
circuit.fire(`${nameServiceHost}/api/name`).then(name => {
response.send({ content: `Hello, ${name}`, time: new Date() });
}).catch(console.error);
});
...
...
// Import the circuit breaker add-on
const Opossum = require('@redhat/opossum');
...
// Create a new circuit breaker instance and pass the
// remote nameService as its first parameter
const circuit = new Opossum(nameService, circuitOptions);
// Define a fallback function that will be called when
// the remote nameService fails
function fallback(result) {
console.log('This is the fallback function', result);
}
// Use the circuit breaker's fallback method to add the
// fallback function to the circuit breaker instance
circuit.fallback(fallback);
...
// Greeting API
app.get('/api/greeting', (request, response) => {
// Use the circuit breaker’s fire method to execute the call
// to the name service
circuit.fire(`${nameServiceHost}/api/name`).then(name => {
response.send({ content: `Hello, ${name}`, time: new Date() });
}).catch(console.error);
});
...