1

我想从 AsyncAPI 规范生成代码并尝试它是如何工作的。我的目标是为每个客户端只打开 1 个套接字,并通过该连接发送/接收不同类型的消息。我找不到任何可以向我展示如何生成代码并运行它的示例。

这是API yaml

asyncapi: '2.3.0'
info:
  title: demo
  version: '1.0.0'
  description: websocket demo

servers:
  test:
    url: localhost
    protocol: ws

channels:
  data:
    publish:
      operationId: publishData
      message:
        $ref: '#/components/messages/dataMessage'
    subscribe:
      operationId: subscribeData
      message:
        $ref: '#/components/messages/dataMessage'

components:
  messages:
    dataMessage:
      headers:
        $ref: "#/components/schemas/MessageHeader"
      payload:
        oneOf:
          - $ref: "#/components/schemas/FirstPayloadType"
          - $ref: "#/components/schemas/SecondPayloadType"

  schemas:
    MessageHeader:
      type: object
      properties:
        messageType:
          enum:
            - a
            - b
            - c

    FirstPayloadType:
      type: object
      properties:
        x:
          type: string
        y:
          type: number

    SecondPayloadType:
      type: object
      properties:
        op:
          type: string
        tar:
          type: string

然后我使用https://github.com/asyncapi/generator从这个 yaml 生成 java 代码

ag asyncapi.yaml @asyncapi/java-spring-template

这就是我卡住的地方,它使用springframework消息传递,我不知道如何在使用生成的消息处理程序时配置/实现它。或者我可能在 yaml 中遗漏了一些东西,所以它不能正确生成。

4

1 回答 1

0

那是因为模板不支持除Kafka, AMQP , and MQTT` 协议之外的任何东西。

在撰写本文时,不存在任何模板供您为 WebSocket 协议生成 Java 代码。

如果您希望模板支持该协议,请为其创建功能请求。

或者,如果您愿意,也可以编写自己的模板。

于 2022-02-22T08:14:06.270 回答