v5.0.20.conf 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. node {
  2. name = "emqx@127.0.0.1"
  3. cookie = "emqxsecretcookie"
  4. data_dir = "data"
  5. }
  6. log {
  7. file_handlers.default {
  8. level = warning
  9. file = "log/emqx.log"
  10. }
  11. }
  12. cluster {
  13. name = emqxcl
  14. discovery_strategy = manual
  15. }
  16. dashboard {
  17. listeners.http {
  18. bind = 18083
  19. }
  20. default_username = "admin"
  21. default_password = "public"
  22. }
  23. authentication = [
  24. {
  25. backend = "built_in_database"
  26. mechanism = "password_based"
  27. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  28. user_id_type = "username"
  29. },
  30. {
  31. backend = "mysql"
  32. database = "mqtt_user"
  33. mechanism = "password_based"
  34. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  35. pool_size = 8
  36. query = "SELECT password_hash, salt FROM mqtt_user where username = ${username} LIMIT 1"
  37. query_timeout = "5s"
  38. server = "127.0.0.1:3306"
  39. ssl {enable = false, verify = "verify_peer"}
  40. username = "root"
  41. },
  42. {
  43. backend = "mongodb"
  44. collection = "users"
  45. database = "mqtt"
  46. filter {username = "${username}"}
  47. mechanism = "password_based"
  48. mongo_type = "single"
  49. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  50. password_hash_field = "password_hash"
  51. pool_size = 8
  52. salt_field = "salt"
  53. server = "127.0.0.1:27017"
  54. ssl {enable = false, verify = "verify_peer"}
  55. topology {connect_timeout_ms = "20s"}
  56. },
  57. {
  58. backend = "postgresql"
  59. database = "mqtt_user"
  60. mechanism = "password_based"
  61. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  62. pool_size = 8
  63. query = "SELECT password_hash, salt FROM mqtt_user where username = ${username} LIMIT 1"
  64. server = "127.0.0.1:5432"
  65. ssl {enable = false, verify = "verify_peer"}
  66. username = "root"
  67. },
  68. {
  69. backend = "redis"
  70. cmd = "HMGET mqtt_user:${username} password_hash salt"
  71. database = 0
  72. mechanism = "password_based"
  73. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  74. pool_size = 8
  75. redis_type = "single"
  76. server = "127.0.0.1:6379"
  77. ssl {enable = false, verify = "verify_peer"}
  78. },
  79. {
  80. backend = "http"
  81. body {password = "${password}", username = "${username}"}
  82. connect_timeout = "15s"
  83. enable_pipelining = 100
  84. headers {"content-type" = "application/json"}
  85. mechanism = "password_based"
  86. method = "post"
  87. pool_size = 8
  88. request_timeout = "5s"
  89. ssl {enable = false, verify = "verify_peer"}
  90. url = "http://127.0.0.1:8080"
  91. }
  92. ]
  93. authorization {
  94. cache {enable = true}
  95. deny_action = "ignore"
  96. no_match = "allow"
  97. sources = [
  98. {type = "built_in_database"},
  99. {
  100. enable = true
  101. path = "etc/acl.conf"
  102. type = "file"
  103. }
  104. ]
  105. }
  106. bridges {
  107. webhook {
  108. test {
  109. connect_timeout = "15s"
  110. enable_pipelining = 100
  111. headers {"content-type" = "application/json"}
  112. method = "post"
  113. pool_size = 8
  114. pool_type = "random"
  115. request_timeout = "15s"
  116. resource_opts {
  117. async_inflight_window = 100
  118. auto_restart_interval = "60s"
  119. health_check_interval = "15s"
  120. max_queue_bytes = "1GB"
  121. query_mode = "async"
  122. request_timeout = "15s"
  123. worker_pool_size = 4
  124. }
  125. ssl {enable = false, verify = "verify_peer"}
  126. url = "http://127.0.0.1:8080/webhook"
  127. }
  128. }
  129. }
  130. conn_congestion {enable_alarm = true, min_alarm_sustain_duration = "1m"}
  131. exhook {
  132. servers = [
  133. {
  134. auto_reconnect = "60s"
  135. enable = false
  136. failed_action = "deny"
  137. name = "test"
  138. pool_size = 16
  139. request_timeout = "5s"
  140. ssl {enable = false, verify = "verify_peer"}
  141. url = "http://127.0.0.1:8080"
  142. }
  143. ]
  144. }
  145. flapping_detect {
  146. ban_time = "5m"
  147. enable = false
  148. max_count = 15
  149. window_time = "1m"
  150. }
  151. force_gc {
  152. bytes = "16MB"
  153. count = 16000
  154. enable = true
  155. }
  156. force_shutdown {
  157. enable = true
  158. max_heap_size = "32MB"
  159. max_message_queue_len = 1000
  160. }
  161. gateway {
  162. stomp {
  163. enable_stats = true
  164. frame {
  165. max_body_length = 8192
  166. max_headers = 10
  167. max_headers_length = 1024
  168. }
  169. idle_timeout = "30s"
  170. listeners {
  171. tcp {
  172. default {
  173. bind = "61613"
  174. max_conn_rate = 1000
  175. max_connections = 1024000
  176. }
  177. }
  178. }
  179. mountpoint = ""
  180. }
  181. }
  182. limiter {
  183. bytes_in {burst = "0", rate = "infinity"}
  184. client {
  185. bytes_in {
  186. capacity = "infinity"
  187. divisible = true
  188. failure_strategy = "force"
  189. initial = "0"
  190. low_watermark = "0"
  191. max_retry_time = "10s"
  192. rate = "infinity"
  193. }
  194. connection {
  195. capacity = "infinity"
  196. divisible = false
  197. failure_strategy = "force"
  198. initial = "0"
  199. low_watermark = "0"
  200. max_retry_time = "10s"
  201. rate = "infinity"
  202. }
  203. internal {
  204. capacity = "infinity"
  205. divisible = false
  206. failure_strategy = "force"
  207. initial = "0"
  208. low_watermark = "0"
  209. max_retry_time = "10s"
  210. rate = "infinity"
  211. }
  212. message_in {
  213. capacity = "infinity"
  214. divisible = false
  215. failure_strategy = "force"
  216. initial = "10"
  217. low_watermark = "0"
  218. max_retry_time = "10s"
  219. rate = "100"
  220. }
  221. message_routing {
  222. capacity = "infinity"
  223. divisible = false
  224. failure_strategy = "force"
  225. initial = "0"
  226. low_watermark = "0"
  227. max_retry_time = "10s"
  228. rate = "infinity"
  229. }
  230. }
  231. connection {burst = "0", rate = "infinity"}
  232. internal {burst = "0", rate = "infinity"}
  233. message_in {burst = "100", rate = "1000/s"}
  234. message_routing {burst = "0", rate = "infinity"}
  235. }
  236. listeners {
  237. ssl {
  238. default {
  239. bind = "0.0.0.0:8883"
  240. max_connections = 512000
  241. ssl_options {
  242. cacertfile = "etc/certs/cacert.pem"
  243. certfile = "etc/certs/cert.pem"
  244. keyfile = "etc/certs/key.pem"
  245. }
  246. }
  247. }
  248. tcp {
  249. default {
  250. acceptors = 32
  251. bind = "0.0.0.0:1883"
  252. enable_authn = true
  253. enabled = true
  254. limiter {
  255. bytes_in {
  256. capacity = "infinity"
  257. initial = "0"
  258. rate = "infinity"
  259. }
  260. client {
  261. bytes_in {
  262. capacity = "infinity"
  263. divisible = false
  264. failure_strategy = "force"
  265. initial = "0"
  266. low_watermark = "0"
  267. max_retry_time = "10s"
  268. rate = "infinity"
  269. }
  270. connection {
  271. capacity = "infinity"
  272. divisible = false
  273. failure_strategy = "force"
  274. initial = "0"
  275. low_watermark = "0"
  276. max_retry_time = "10s"
  277. rate = "infinity"
  278. }
  279. message_in {
  280. capacity = "infinity"
  281. divisible = false
  282. failure_strategy = "force"
  283. initial = "0"
  284. low_watermark = "0"
  285. max_retry_time = "10s"
  286. rate = "infinity"
  287. }
  288. message_routing {
  289. capacity = "infinity"
  290. divisible = false
  291. failure_strategy = "force"
  292. initial = "0"
  293. low_watermark = "0"
  294. max_retry_time = "10s"
  295. rate = "infinity"
  296. }
  297. }
  298. connection {
  299. capacity = 1000
  300. initial = "0"
  301. rate = "1000/s"
  302. }
  303. message_in {
  304. capacity = "infinity"
  305. initial = "0"
  306. rate = "infinity"
  307. }
  308. message_routing {
  309. capacity = "infinity"
  310. initial = "0"
  311. rate = "infinity"
  312. }
  313. }
  314. max_connections = 1024000
  315. proxy_protocol = false
  316. proxy_protocol_timeout = "3s"
  317. tcp_options {
  318. active_n = 100
  319. backlog = 1024
  320. buffer = "4KB"
  321. high_watermark = "1MB"
  322. nodelay = true
  323. reuseaddr = true
  324. send_timeout = "15s"
  325. send_timeout_close = true
  326. }
  327. zone = "default"
  328. }
  329. }
  330. ws {
  331. default {
  332. bind = "0.0.0.0:8083"
  333. max_connections = 1024000
  334. websocket {mqtt_path = "/mqtt"}
  335. }
  336. }
  337. wss {
  338. default {
  339. bind = "0.0.0.0:8084"
  340. max_connections = 512000
  341. ssl_options {
  342. cacertfile = "etc/certs/cacert.pem"
  343. certfile = "etc/certs/cert.pem"
  344. keyfile = "etc/certs/key.pem"
  345. }
  346. websocket {mqtt_path = "/mqtt"}
  347. }
  348. }
  349. }
  350. mqtt {
  351. await_rel_timeout = "300s"
  352. exclusive_subscription = false
  353. idle_timeout = "15s"
  354. ignore_loop_deliver = false
  355. keepalive_backoff = 0.75
  356. max_awaiting_rel = 100
  357. max_clientid_len = 65535
  358. max_inflight = 320
  359. max_mqueue_len = 1000
  360. max_packet_size = "10MB"
  361. max_qos_allowed = 2
  362. max_subscriptions = "infinity"
  363. max_topic_alias = 65535
  364. max_topic_levels = 128
  365. mqueue_default_priority = "lowest"
  366. mqueue_priorities = "disabled"
  367. "mqueue_store_qos0" = true
  368. peer_cert_as_clientid = "disabled"
  369. peer_cert_as_username = "disabled"
  370. response_information = ""
  371. retain_available = true
  372. retry_interval = "30s"
  373. server_keepalive = "disabled"
  374. session_expiry_interval = "2h"
  375. shared_subscription = true
  376. strict_mode = false
  377. upgrade_qos = false
  378. use_username_as_clientid = false
  379. wildcard_subscription = true
  380. }
  381. overload_protection {
  382. backoff_delay = 1
  383. backoff_gc = false
  384. backoff_hibernation = true
  385. backoff_new_conn = true
  386. enable = false
  387. }
  388. retainer {
  389. backend {
  390. index_specs = [
  391. [1, 2, 3],
  392. [1, 3],
  393. [2, 3],
  394. [3]
  395. ]
  396. max_retained_messages = 0
  397. storage_type = "ram"
  398. type = "built_in_database"
  399. }
  400. enable = true
  401. flow_control {
  402. batch_deliver_limiter {
  403. capacity = "infinity"
  404. client {
  405. capacity = "infinity"
  406. divisible = false
  407. failure_strategy = "force"
  408. initial = "0"
  409. low_watermark = "0"
  410. max_retry_time = "10s"
  411. rate = "infinity"
  412. }
  413. initial = "0"
  414. rate = "infinity"
  415. }
  416. batch_deliver_number = 0
  417. batch_read_number = 0
  418. }
  419. max_payload_size = "10MB"
  420. msg_clear_interval = "0s"
  421. msg_expiry_interval = "0s"
  422. stop_publish_clear_msg = false
  423. }
  424. rule_engine {
  425. ignore_sys_message = true
  426. jq_function_default_timeout = "10s"
  427. jq_implementation_module = "jq_nif"
  428. rules {
  429. "rule_kcz2" {
  430. actions = ["webhook:test"]
  431. description = ""
  432. metadata {created_at = 1684227520811}
  433. sql = "SELECT\n *\nFROM\n \"t/#\""
  434. }
  435. }
  436. }
  437. slow_subs {
  438. enable = true
  439. expire_interval = "300s"
  440. stats_type = "whole"
  441. threshold = "500ms"
  442. top_k_num = 10
  443. }
  444. stats {enable = true}
  445. sys_topics {
  446. sys_event_messages {
  447. client_connected = true
  448. client_disconnected = true
  449. client_subscribed = true
  450. client_unsubscribed = true
  451. }
  452. sys_heartbeat_interval = "30s"
  453. sys_msg_interval = "1m"
  454. }