4.2. 定义回退功能的应用程序代码示例
这个示例基于向可能失败的远程 name-service 发送调用的 greeting-service 的 greeting-service。本例演示了如何定义一个将以下消息输出到 web 控制台的 fallback 功能: 这是回退功能。
...
// 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);
});
...