# 转发设备消息到消息中间件

1.3版本中增加了将设备消息转发到rabbitMQ或者kafka的功能.

# 转发到RabbitMQ

修改配置文件application.yml:

spring: 
  rabbitmq: # rabbitMQ配置
    host: localhost
    port: 5672
    username: admin
    password: jetlinks
device:
  message:
    writer:
      time-series:
        enabled: true # 直接写出设备消息数据到时序数据库
      rabbitmq:
        enabled: true  # 推送设备消息到rabbitMQ
        consumer: false  # 从rabbitMQ订阅消息并写入到时序数据库,与time-series.enabled不能同时为true
        thread-size: 4 # 消费线程数
        auto-ack: true  # 自定应答,为true可能导致数据丢失,但是性能最高。
        topic-name: device.message  # rabbitMQ exchange名称
        #ignore-message-types: INVOKE_FUNCTION,READ_PROPERTY # 忽略转发消息类型
        #include-message-types: EVENT    # 只转发指定的消息类型

# 转发到Kafka

修改配置文件application.yml:

spring:
  kafka:
    consumer:
      client-id: ${spring.application.name}-consumer:${server.port}
      group-id: ${spring.application.name}
      max-poll-records: 1000
    producer:
      client-id: ${spring.application.name}-producer:${server.port}
      acks: 1
      retries: 3
    bootstrap-servers: ["127.0.0.1:9092"]
device:
  message:
    writer:
      time-series:
        enabled: true # 直接写出设备消息数据到时序数据库
      kafka:
        enabled: true  # 推送设备消息到kafka
        consumer: false  # 从kafka订阅消息并写入到时序数据库,与time-series.enabled不能同时为true
        topic-name: device.message  # kafka topic名称
        #ignore-message-types: INVOKE_FUNCTION,READ_PROPERTY # 忽略转发消息类型
        #include-message-types: EVENT    # 只转发指定的消息类型