首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >seneca -两个微服务之间的通信

seneca -两个微服务之间的通信
EN

Stack Overflow用户
提问于 2018-08-15 15:39:11
回答 1查看 330关注 0票数 0

我是新来的塞内加。我一直试图建立两个微服务来相互交流,但我一直失败,并得到了以下错误:

错误:响应错误:在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

代码语言:javascript
复制
    {
    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

代码语言:javascript
复制
{
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

代码语言:javascript
复制
{

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

代码语言:javascript
复制
{

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-17 10:42:55

理查·罗杰尔在“这个职位”中解释了塞内卡。“服务发现”一章讨论了如何在网络中划分微观服务。

对于我的应用程序,我使用塞内卡网插件。这个插件自述如下:

要加入网络,一个服务所要做的就是联系网络中已经存在的另一个服务。然后,网络共享关于哪些服务响应哪种模式的信息。不需要在任何地方配置单个服务的位置。

阅读Richard的帖子和插件文档可能是项目的良好起点。希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51861930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档