我是新来的塞内加。我一直试图建立两个微服务来相互交流,但我一直失败,并得到了以下错误:
错误:响应错误:在module.exports.internals.Utils.internals.Utils.handle_response (c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\seneca-transport\lib\transport-utils.js:71:11) at c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\seneca-transport\lib\http.js:154:25 at read (c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\wreck\未找到404(c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\wreck\lib\index.js:398:20)在包装(c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\hoek\lib\index.js:879:20) at module.exports.internals.Recorder.onReaderFinish (c:\Users\Actiview\Desktop\microservices\orderManager\node_modules\wreck\lib\index.js:449:16)在Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20) at module.exports.internals.Recorder.emit (events.js:208:7) at finishMaybe (_stream_writable.js:614:14) === SENECA致命错误===消息: seneca:操作失败:响应错误: 404未找到。代码: Seneca/pcbyi7v5c76v/1534346071465/6536/3.7.0/-实例: act_execute详细信息:{消息:‘响应错误: 404未找到’,模式:‘,fn:{ transport_client id:’主机:127.0.0.2,pg:,端口:8080‘},回调:{函数:绑定action_reply seneca: Seneca {‘私有$’:{ act:{父:{ start: 1534346071559,结束: 1534346071561,还有更多.
这是我的密码:
orderIndex.ts
{
const orderPlugin = require('./orderManagerPlugin');
const express = require('express');
const SenecaWeb = require('seneca-web');
const seneca = require("seneca")();
let bodyParser = require('body-parser');
var Routes = [{
prefix: '/orders',
pin: 'area:order,action:*',
map: {
fetch: { GET: true },
create: { GET: false, POST: true },
delete: { GET: false, DELETE: true },
}
}]
var config = {
routes: Routes,
adapter: require('seneca-web-adapter-express'),
context: express().use(bodyParser.urlencoded({ 'extended': 'true' })).use(bodyParser.json()),
options: {parseBody: false}
}
seneca.use(SenecaWeb,config);
seneca.use( orderPlugin );
seneca.ready(function (err) {
const app = seneca.export('web/context')();
app.listen({ host: "127.0.0.4", port: 8081 });
});
}orderPlugin.ts
{
var plugin = function orderPlugin(options) {
var seneca = this;
var senecaEmailer;
seneca.add({ area: "order", action: "fetch" }, function (args,
done) {
var orders = this.make("orders");
orders.list$({ id: args.id }, done);
});
seneca.add({ area: "order", action: "delete" }, function (args,
done) {
var orders = this.make("orders");
orders.remove$({ id: args.id }, function (err) {
done(err, null);
});
});
seneca.add({ area: "order", action: "create" }, function (args,
done) {
console.log('create order');
senecaEmailer.act( 'role:web', {area: 'email', action:'send'} , done);
});
this.add( { init: "orderPlugin" }, function (args, done) {
senecaEmailer = require("seneca")().client({ host: "127.0.0.2", port: 8080 });
done();
});
}
module.exports = plugin;
}emailIndex.ts
{
const mailPlugin = require('./emailingPlugin');
const express = require('express');
const SenecaWeb = require('seneca-web');
const seneca = require("seneca")();
let bodyParser = require('body-parser');
var Routes = [{
prefix: '/emails',
pin: 'area:email, action:*',
map: {
send: { GET: true },
}
}]
var config = {
routes: Routes,
adapter: require('seneca-web-adapter-express'),
context: express().use(bodyParser.urlencoded({ 'extended': 'true' })).use(bodyParser.json()),
options: {parseBody: false}
}
seneca.use(SenecaWeb,config);
seneca.use( mailPlugin );
seneca.ready(function (err) {
const app = seneca.export('web/context')();
app.listen({ host: "127.0.0.2", port: 8080 } );
});
}emailPlugin.ts
{
import {EmailService} from './emailService';
var plugin = function emailPlugin(options) {
var seneca = this;
let mailer :EmailService ;
seneca.add({area: "email", action: "send"}, function(args, done) {
mailer.sendMail('guzon56@gmail.com', done);
});
this.add( { init: "emailPlugin" }, function (args, done) {
console.log('before init');
mailer = require('./emailService')();
console.log('after init');
done();
});
};
module.exports = plugin;
}请帮帮我。Tnx
发布于 2018-08-17 10:42:55
理查·罗杰尔在“这个职位”中解释了塞内卡。“服务发现”一章讨论了如何在网络中划分微观服务。
对于我的应用程序,我使用塞内卡网插件。这个插件自述如下:
要加入网络,一个服务所要做的就是联系网络中已经存在的另一个服务。然后,网络共享关于哪些服务响应哪种模式的信息。不需要在任何地方配置单个服务的位置。
阅读Richard的帖子和插件文档可能是项目的良好起点。希望能帮上忙!
https://stackoverflow.com/questions/51861930
复制相似问题