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

Mat*_*lli 3 javascript runatserver docker nats.io moleculer

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

该项目使用 Moleculer,NATS 是通过 docker 创建为容器。


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

ERROR - NATS error. 'Maximum Payload Violation
Run Code Online (Sandbox Code Playgroud)

内部坞站记录 NATS 返回:

cid:1 - maximum payload exceeded: 1341972 vs 1048576
Run Code Online (Sandbox Code Playgroud)

我尝试了以下项目:

Moleculer Broker 配置的代码示例:

const brokerConfig: BrokerOptions = {
  ...,
  transporter: "NATS",
  transit: {
    maxQueueSize: 100000,
    disableReconnect: false,
    disableVersionCheck: false,
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

nats配置文件的代码示例:

{
  max_payload: 1000000
}
Run Code Online (Sandbox Code Playgroud)

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

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/home/matheus/nats-server.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/08959b2fce0deb2abea27e103f7f4426b7ed6f3ef64b214f713ebb993c2373e6/merged\\\" at \\\"/var/lib/docker/overlay2/08959b2fce0deb2abea27e103f7f4426b7ed6f3ef64b214f713ebb993c2373e6/merged/nats-server.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type. error Command failed with exit code 125.
Run Code Online (Sandbox Code Playgroud)

Ice*_*bob 7

您应该为 NATS创建一个配置文件。并将其作为 Docker 卷推送到容器并设置command-c nats-server.conf

nats-server.conf

max_payload: 4Mb
Run Code Online (Sandbox Code Playgroud)

启动容器

docker run -d -p 4222:4222 -v ~/nats-server.conf:/nats-server.conf nats -c /nats-server.conf
Run Code Online (Sandbox Code Playgroud)