MqttMessage.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.ruoyi.common.model;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import java.time.LocalDateTime;
  6. import java.util.Map;
  7. /**
  8. * MQTT消息模型类
  9. *
  10. * <p>封装MQTT消息的各种属性,包括主题、内容、QoS等,
  11. * 可用于消息发布和接收场景。</p>
  12. *
  13. * @author andy
  14. * @version 1.0.0
  15. * @since 2025-06-17
  16. */
  17. @Data
  18. @NoArgsConstructor
  19. @AllArgsConstructor
  20. public class MqttMessage {
  21. /**
  22. * 消息主题
  23. */
  24. private String topic;
  25. /**
  26. * 消息内容
  27. */
  28. private String payload;
  29. /**
  30. * 服务质量
  31. * <p>0 - 最多发送一次,不保证送达</p>
  32. * <p>1 - 至少发送一次,确保送达但可能重复</p>
  33. * <p>2 - 确保仅送达一次</p>
  34. */
  35. private int qos = 1;
  36. /**
  37. * 是否为保留消息
  38. */
  39. private boolean retained = false;
  40. /**
  41. * 消息发送/接收时间
  42. */
  43. private LocalDateTime timestamp = LocalDateTime.now();
  44. /**
  45. * 消息自定义属性
  46. */
  47. private Map<String, Object> properties;
  48. /**
  49. * 带主题和内容的构造函数
  50. *
  51. * @param topic 消息主题
  52. * @param payload 消息内容
  53. */
  54. public MqttMessage(String topic, String payload) {
  55. this.topic = topic;
  56. this.payload = payload;
  57. }
  58. /**
  59. * 带主题、内容、QoS和保留标志的构造函数
  60. *
  61. * @param topic 消息主题
  62. * @param payload 消息内容
  63. * @param qos 服务质量
  64. * @param retained 是否保留
  65. */
  66. public MqttMessage(String topic, String payload, int qos, boolean retained) {
  67. this.topic = topic;
  68. this.payload = payload;
  69. this.qos = qos;
  70. this.retained = retained;
  71. }
  72. }