问题标签 [moleculer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1000 浏览

javascript - NATS 与分子。如何更改 NATS max_payload 值?

我的问题是我需要增加 NATS 接收的 max_payload 值,但我不知道在哪里可以做到。

该项目使用 Moleculer 并且 NATS 被创建为带有 docker 的容器。


当我尝试发出大于 1MB 的请求时,NATS 返回:

内部停靠站日志 NATS 返回:


我尝试了以下项目:

分子经纪人配置的代码示例:

nats 配置文件的代码示例:


使用 NATS 配置文件运行 docker 时出错:

0 投票
2 回答
110 浏览

reactjs - 分子和微前端服务

有没有办法在分子框架中制作微前端?所以一个api/angular地址将是 angular 和一个 drugin,例如api/react将是 react

0 投票
0 回答
134 浏览

node.js - NodeJS 和猫鼬 CastError: Cast to [ObjectId] failed for value

我正在使用分子操作将数据输入到我的数据库中。我主要使用带有猫鼬的 NodeJS 来定义模型。到目前为止,我能够创建一个模型,但是当我尝试创建一个一对多的关系时,它给了我这个错误

错误:{ 'deliveryParcels.0': CastError: Cast to [ObjectId] failed for value "[{"parcelId":"LHE660851871415","address":"24 E muhafiz town lahore","type":"COD", "addressLocation":{"lat":31.4532941,"lng":74.2166403},"customerName":"ALI MALHI","customerPhone":"3314488396","processingStatus":"pending","amount":2500," vendorOrderId":"other"}]" 在路径 "deliveryParcels.0"

我希望同时创建两个集合rider-tasksdelivery-parcels但只rider-tasks创建集合而不创建delivery-parcels. 我在架构中做错了什么?

这是我的模型

骑手任务模型

快递包裹

我的服务

0 投票
2 回答
153 浏览

node.js - 即使在moleculer.io的`beforeCall()`钩子中将socket附加到`ctx`后,也获得`undefined`值

我正在使用molerrjs 来处理后端的微服务,并使用其中一个前端应用程序来处理通过套接字进行的通信。为此,我正在使用moleculer.io. 我遇到的问题是,即使我将套接字连接到ctx钩子中,当我在控制器函数中onBeforeCall()console.log 时,套接字也不存在。ctx

我的网关看起来像这样(注意套接字被添加到钩子中的ctx对象中:onBeforeCall()

我的 auth.service 看起来像这样 - 注意register()尝试访问的函数ctx.socket

在被调用的register()函数中,ctx.socketundefined. 我在这里想念什么?我认为它onBeforeCall()旨在用于这种目的,但也许我误解了一些东西。

我应该或可以采用其他方法来确保套接字在被调用函数中可用吗?只是为了澄清一下,套接字在onBeforeCall()钩子中可用。我需要弄清楚如何使它可用。

0 投票
0 回答
36 浏览

reactjs - 套接字连接成功后反应应用程序中未获取数据

我正在尝试在通过套接字连接时从我的分子后端返回一些数据到我的反应前端。我在获取数据方面遇到了挑战,让我特别困惑的是,当我在后端出现错误时,完整的错误会通过套接字返回到前端。但是当我解决错误时,我在前端得到的只是null. 我不清楚为什么我会在错误情况下得到响应,而在null没有错误时得到响应。任何帮助将不胜感激。

这是我在后端的代码。当 'auth.register' 的套接字请求进入时,此函数会触发:

这是我的前端套接字调用:

使用这样的代码,res在前端的控制台中等于null.

现在,如果我将后端代码更改为出现错误,如下所示:

完整的错误通过套接字返回,所以在前端控制台中,res是这样的:

我试图理解为什么,如果后端出现错误,会在前端的套接字调用回调中成功返回,但如果没有错误,我最终得到的只是null.

我在这里想念什么?在这种情况下如何将数据返回到前端?

0 投票
1 回答
189 浏览

kubernetes - 使用分子和 kubernetes 建立基础设施(怀疑)

我正在测试分子微服务框架以建立基础设施。我将使用打字稿(https://github.com/moleculerjs/moleculer-template-project-typescript)。我的想法是根据文档是:

  • 使用 API Gateway 创建一个项目 => make doker => 使用 N 个副本进行 k8s 部署
  • 每个微服务创建 1 个项目 => dockerize => 使用 N 个副本进行 k8s 部署
  • 每个微服务创建 2 个项目 => dockerize => 使用 N 个副本进行 k8s 部署 ...
  • 每个微服务创建 N 个项目 => dockerize => 使用 N 个副本进行 k8s 部署

我将使用 redis 作为传输器。我也想在开发中使用redis。

我有这个疑问,因为您可以在同一个项目中创建所有微服务,但是这样,您正在开发一个单一的应用程序(并且仅在一个线程中)。我认为您需要在独立(打字稿)项目中分离每个微服务,以便在部署阶段在 docker 映像和 k8s 中的 make pod 之后制作它。

0 投票
1 回答
78 浏览

node.js - 如何使用分子独立运行 docker 图像而不是使用“组合”?

我有这个 docker-compose.yaml。它使用公共 API 定义了 1 个服务和 4 个服务(复制的),每个服务有另外两个微服务(一个接收事件,另一个将信息保存到 mongo)。当我执行“docker-compose up”时,这非常有效。但我想用“docker run”运行每个图像。

当我执行“撰写运行监视器日志公共”时,执行会因任何原因而关闭。

我可以看到这个执行不知道需要加载“api”服务,但这是在 docker-compose.yaml 中定义的,为什么图像没有读取?

0 投票
2 回答
127 浏览

docker - 分子指标端口未暴露在 docker 容器中

我正在将分子用于微服务。实际上我不知道如何在 docker 容器中公开指标端口(3030)以便能够从 http://host:3030/metrics 读取指标

当应用程序在我的本地主机上执行时,它工作得很好,但是在使用 docker-compose --build -up 部署时它不起作用。

我的 docker 撰写 traefik 部分

谢谢您的帮助

所有 docker-compose.yml

更新:npm run dev在我的本地机器上运行时,我可以在 http://localhost:3030/metrics 访问指标 url,以获取所有正在运行的微服务的指标。但是当我将代码部署到容器(上面的 docker-compose.yml)时,应用程序在 http://host:3000 上完美运行,但 http://localhost:3030/ 无法访问。我禁用了防火墙但没有运气我在 docker-compose.yml 文件的 traefik 部分添加了端口映射 3030:3030 但没有

感谢您的帮助和耐心

0 投票
1 回答
127 浏览

node.js - 在 MoleculerJS 中构造上下文对象

我无法理解 MoleculerJS 的基本概念。我有一个在收到 SQS 消息时调用的方法。

现在我需要调用另一个服务并将“msg”作为服务参数发送。

我将需要 Context 对象,以便我可以调用另一个服务操作(这是正确的吗??)。但正如您所见,我在从 SQS 接收消息的范围内没有 Context 对象。

问题

我是否遵循正确的方法来实现我想做的事情?如果是这样,我该如何构造一个 Context 对象?

如果需要完整代码

0 投票
0 回答
39 浏览

prometheus - 在容器内运行时未导出分子自定义指标

我正在使用分子和普罗米修斯记者,我有一个奇怪的情况。我创建了一个简单的服务,可以像这样导出自定义指标:

当达到这样的终点时,我会增加这个值:

指标在 http://localhost:3030/metrics 导出,我可以访问它们。

当我npm run dev在我的开发机器上运行项目时,指标被导出并且我可以看到它们

但是当我在容器内运行代码时,(npm run dc:up)只有默认指标,而自定义指标不会出现。

有任何想法吗?