我正在尝试将hystrixJS配置到我的一个nodejs应用程序中。我想结束我的应用程序正在制作的几个外部依赖项。 https://www.npmjs.com/package/hystrixjs
我阅读了自述文件,但我仍然无法获得如何使用此hystrix包装我的依赖项调用以及如何为此配置仪表板。如果有人已经尝过这个,请给我一些指示。
感谢。
答案 0 :(得分:8)
您可以在回购邮件的example app中找到样本。但也可以随意提交关于bitbucket的问题,我将尝试提供更多示例。
通常,您可以包装任何返回promise的函数,它不必是http请求,尽管它是最常见的用例。
仪表板不是hystrix本身的一部分。它的工作方式,您可以在本地运行仪表板,查看说明here,然后将一个端点添加到您的应用程序以公开指标。示例应用程序显示了如何执行此操作:
function hystrixStreamResponse(request, response) {
response.append('Content-Type', 'text/event-stream;charset=UTF-8');
response.append('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate');
response.append('Pragma', 'no-cache');
return hystrixStream.toObservable().subscribe(
function onNext(sseData) {
response.write('data: ' + sseData + '\n\n');
},
function onError(error) {console.log(error);
},
function onComplete() {
return response.end();
}
);
};
app.get('/api/hystrix.stream', hystrixStreamResponse);
然后,您可以将网址粘贴到信息中心,它会显示您的命令。
如果有帮助请告诉我
答案 1 :(得分:0)
可能有所帮助的抽象:
import {commandFactory} from "hystrixjs";
export const CommandsBuilder = class CommandsBuilder {
static createMyCommand({runFn, fallbackFn}){
return commandFactory.getOrCreate("my-command-name")
.run(runFn)
.fallbackTo(fallbackFn)
.build();
}
};
我也对此做了post。
答案 2 :(得分:-1)
如果你使用hapi服务器,你可以创建sse数据:
use strict'
const hystrixSSEStream = require('hystrixjs').hystrixSSEStream;
module.exports = [
{
method: 'GET',
path: '/hystrix-sse-stream',
handler: (request, reply) => {
request.raw.res.writeHead(200, { 'content-type': 'text/event-stream; charset=utf-8',
'Pragma': 'no-cache',
'cache-control': 'no-cache, no-store, max-age=0, must-revalidate' })
hystrixSSEStream.toObservable().subscribe(
function onNext(sseData) {
request.raw.res.write('data: ' + sseData + '\n\n')
},
function onError(error) {
reply(error)
},
function onComplete() {
reply.continue()
}
)
}
}
]