微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hono 和 Enmass 集成引发事件错误

如何解决Hono 和 Enmass 集成引发事件错误

我正在尝试使用 enmasse 部署 hono。为此,我已经安装了 enmasse 并创建了如下地址空间和地址:

enmasse_iot.yaml

apiVersion: enmasse.io/v1beta1
kind: Addressspace
Metadata:
  name: iot1
spec:
  type: standard
  plan: standard-medium
  authenticationService:
    name: standard-authservice
---
apiVersion: enmasse.io/v1beta1
kind: Address
Metadata:
    name: iot1.command
spec:
    address: command
    type: anycast
    plan: standard-medium-anycast
---
apiVersion: enmasse.io/v1beta1
kind: Address
Metadata:
    name: iot1.command-internal
spec:
    address: command_internal
    type: anycast
    plan: standard-medium-anycast
---
apiVersion: enmasse.io/v1beta1
kind: Address
Metadata:
    name: iot1.command-response
spec:
    address: command_response
    type: anycast
    plan: standard-medium-anycast
---
apiVersion: enmasse.io/v1beta1
kind: Address
Metadata:
    name: iot1.telemetry
spec:
    address: telemetry
    type: anycast
    plan: standard-medium-anycast
---
apiVersion: enmasse.io/v1beta1
kind: Address
Metadata:
    name: iot1.event
spec:
    address: event
    type: queue
    plan: standard-small-queue
---
apiVersion: user.enmasse.io/v1beta1
kind: MessagingUser
Metadata:
  name: iot1.hono
spec:
  username: hono
  authentication:
    type: password
    password: SE9OTw== # pwd=HONO,Base64 encoded
  authorization:
    - addresses: ["*"]
      operations: ["send","recv","view","manage"]

Hono 安装在舵图上并使用以下值文件

livenessProbeInitialDelaySeconds: 900
readinessProbeInitialDelaySeconds: 45
useLoadBalancer: false

amqpMessagingNetworkExample:
  enabled: false

commandRouterService:
  extraSecretMounts:
    amqp-network:
      secretName: "mysecret"
      mountPath: "/etc/custom"

adapters:
  http:
    extraSecretMounts:
      amqp-network:
        secretName: mysecret
        mountPath: /etc/custom
  mqtt:
    extraSecretMounts:
      amqp-network:
        secretName: mysecret
        mountPath: /etc/custom

  amqpMessagingNetworkSpec:
    host: messaging-5355a0a.enmasse-infra
    port: 5671
    credentialsPath: /etc/custom/amqp-credentials.properties

  commandAndControlSpec:
    host: messaging-5355a0a.enmasse-infra
    port: 5671
    credentialsPath: /etc/custom/amqp-credentials.properties

deviceRegistryExample:
  enabled: true
  addExampleData: false
  extraSecretMounts:
    amqp-network:
      secretName: mysecret
      mountPath: /etc/custom

mongodb:
  createInstance: false

然后我在Hono中创建了租户“iot1”并将“dev”添加到该租户。 之后,我写了一个简单的AMQP-receiver并开始实例如下:

python ./amqp-receiver.py -s amqps://10.100.42.58:5671 -a telemetry/iot1
python ./amqp-receiver.py -s amqps://10.100.42.58:5671 -a event/iot1

另一方面,我的模拟设备将自身与 Hono 的 MQTT 适配器连接,并通过 mqtt 发布遥测和事件。遥测数据由第一个 amqp 接收器接收,没有任何问题。但是一旦事件发布,Hono 的 MQTT-Adapter 就会抛出“无可用信用”错误

您可以找到 Hono 和 Enmasse here 的日志文件

  1. enmasse 代理有问题 - 查看日志文件吗?
  2. 我的 enmasse 设置有误吗?或者是为 Hono 设置 enmassse 的更好、更简洁的方法
  3. 应该如何处理事件和命令?

谢谢!

更新

似乎是因为 artemis-broker 无法动态创建事件端点。 IE。向和从队列“事件”发送和接收工作正常,但租户的扩展(例如“事件/iot1”)不起作用,这导致 hono 的 MQTT 适配器中没有可用信用错误。 知道如何在 enmasse yaml 文件中设置 Artemis 的“自动创建-*”选项吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。