node.js mqtt 콜백에서 mosquitto 브로커에 게시

RoyHB

node.js를 사용할 때 콜백이 '대기열'되는 방식을 잘 모르겠습니다.

노드 mqtt 클라이언트에서 메시지를받는 tcp 서버가 있습니다. 메시지가 mqtt 클라이언트의 onMessage 콜백에 도착하면 연결된 TCP 클라이언트로 메시지를 보내는 메서드가 호출됩니다. 서버는 각각 50-300 바이트의 초당 약 150 개의 메시지를 처리합니다 (최대).

가끔 '미스터리'락업이 있습니다. 서버가 실행 중이지만 클라이언트에 메시지가 전달되지 않습니다.

tcp 서버가 '마지막'메시지로 클라이언트 서비스를 완료하기 전에 '새'메시지가 도착할 수 있다는 생각이 들었고 이것이 혼란 스러울 수 있는지 확실하지 않습니다. 나는 '오래된'메시지 처리기를 처리하는 함수가 나중에 도착하기 위해 스택에 푸시 될 수 있다고 기대합니다. 모든 새 메시지가 서비스되었을 때 계속 될 것입니다.

현재 나는 메시지를 전달하는 함수에 대한 중복 호출을 방지하기 위해 뮤텍스 또는 다른 장치를 사용하지 않습니다. 그래서 내 질문은 중복 도착 가능성이있는이 수준의 메시징을 처리하기 위해 노드와 mqtt 클라이언트를 신뢰해야합니까, 아니면 일종의 조절, 대기열 또는 뮤텍스 기계 를 구축해야 합니까? 그렇다면 kue 모듈 이 논리적으로 갈 수 있습니까?

RoyHB

문제가 내 서버가 아니라 고객 클라이언트에 있음이 밝혀졌습니다. 클라이언트는 메시징 볼륨을 따라갈 수 없었습니다 (아마도 일부 차단 코드로 인해).

mqtt 메시지를 대기열에서 빼고 클라이언트로 보내는 메시지 수를 조절하여 메시지 사이에 5ms 이상이 경과하지 않도록함으로써이를 발견했습니다. 놀랍게도 (그리고 행복하게) 미스터리 메시지 중지 문제는 내가 이것을 한 후에 사라졌습니다.

까다로운 부분은 큐가 합리적인 크기 이상으로 커지지 않도록 클라이언트가 안정적으로 작업 할 수있는 최소 메시지 간격을 찾는 것입니다. 시간이되면 고객이 클라이언트 코드를 수정할 수있을 때까지 일부 메시지를 잃어 버림으로써 최대 대기열 크기를 관리하는 코드를 추가하겠습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mosquitto mqtt 브로커는 구독자에게 20 개 이상의 게시 패킷을 보내지 않습니다.

분류에서Dev

MQTT 및 Node.js로 끝없이 게시되는 메시지

분류에서Dev

Mosquitto PSK 암호화와 함께 Node.js MQTT 사용

분류에서Dev

Spring MVC + Mosquitto + MQTT 통합에서 메시지를받을 수 없음

분류에서Dev

node.js에서 콜백 함수는 어떻게 실행됩니까?

분류에서Dev

콜백에서 메시지를 내 보냅니다. Express.io node.js

분류에서Dev

Node.js : 콜백에서 함수를 다시 호출하는 방법

분류에서Dev

Mosquitto를 새 Azure MQTT 백엔드에 연결

분류에서Dev

Unix에서 SSL 인증 MQTT 브로커를 서비스로 시작

분류에서Dev

Mosquitto MQTT 연결 소켓 오류 (PLC에서 연결)

분류에서Dev

Node.js를 사용하여 외부 범위에서 콜백 함수를 어떻게 정의합니까?

분류에서Dev

이 콜백 호출은 mongo .find 호출을 사용하여 Node.js에서 어떻게 작동합니까?

분류에서Dev

콜백 함수 Node JS 내에서 for 루프를 끊는 방법

분류에서Dev

Node.js : 하나의 함수에서 여러 콜백

분류에서Dev

Node.js : 하나의 함수에서 여러 콜백

분류에서Dev

node.js 코드에서 콜백 매개 변수의 의미

분류에서Dev

Node.js 콜백에서 값 가져 오기

분류에서Dev

AWS IoT를 로컬 Mosquitto MQTT와 브리징 할 때 "인증서 확인 실패"

분류에서Dev

node.js에서 콜백 매개 변수로 함수 실행 동기화

분류에서Dev

node.js는 경로에서 중첩 콜백을 표현합니다.

분류에서Dev

Node.js는 콜백에서 객체로 값을 할당합니다.

분류에서Dev

Node.js에서 핸들러 / 콜백 메소드에서 클라이언트 측으로 메시지를 보내는 방법

분류에서Dev

Node.js에서 핸들러 / 콜백 메소드에서 클라이언트 측으로 메시지를 보내는 방법

분류에서Dev

node.js에서 async.series에 대한 콜백을 정의 할 위치

분류에서Dev

Mosquitto MQTT 브로커를 사용하여 LIFO (Last In First Out) 방식으로 메시지를 보내는 방법은 무엇입니까?

분류에서Dev

unity3d에서 TLS 사용 브로커에 연결을 시도 할 때 MQTT 시간 초과

분류에서Dev

springxd 소스 mqtt를 mqtt 브로커에 등록하는 방법

분류에서Dev

C ++ 11에서 스레드가 node.js / javascript 콜백과 비슷한가요?

분류에서Dev

Node.js의 일련의 콜백 함수에서 결과 반환

Related 관련 기사

  1. 1

    mosquitto mqtt 브로커는 구독자에게 20 개 이상의 게시 패킷을 보내지 않습니다.

  2. 2

    MQTT 및 Node.js로 끝없이 게시되는 메시지

  3. 3

    Mosquitto PSK 암호화와 함께 Node.js MQTT 사용

  4. 4

    Spring MVC + Mosquitto + MQTT 통합에서 메시지를받을 수 없음

  5. 5

    node.js에서 콜백 함수는 어떻게 실행됩니까?

  6. 6

    콜백에서 메시지를 내 보냅니다. Express.io node.js

  7. 7

    Node.js : 콜백에서 함수를 다시 호출하는 방법

  8. 8

    Mosquitto를 새 Azure MQTT 백엔드에 연결

  9. 9

    Unix에서 SSL 인증 MQTT 브로커를 서비스로 시작

  10. 10

    Mosquitto MQTT 연결 소켓 오류 (PLC에서 연결)

  11. 11

    Node.js를 사용하여 외부 범위에서 콜백 함수를 어떻게 정의합니까?

  12. 12

    이 콜백 호출은 mongo .find 호출을 사용하여 Node.js에서 어떻게 작동합니까?

  13. 13

    콜백 함수 Node JS 내에서 for 루프를 끊는 방법

  14. 14

    Node.js : 하나의 함수에서 여러 콜백

  15. 15

    Node.js : 하나의 함수에서 여러 콜백

  16. 16

    node.js 코드에서 콜백 매개 변수의 의미

  17. 17

    Node.js 콜백에서 값 가져 오기

  18. 18

    AWS IoT를 로컬 Mosquitto MQTT와 브리징 할 때 "인증서 확인 실패"

  19. 19

    node.js에서 콜백 매개 변수로 함수 실행 동기화

  20. 20

    node.js는 경로에서 중첩 콜백을 표현합니다.

  21. 21

    Node.js는 콜백에서 객체로 값을 할당합니다.

  22. 22

    Node.js에서 핸들러 / 콜백 메소드에서 클라이언트 측으로 메시지를 보내는 방법

  23. 23

    Node.js에서 핸들러 / 콜백 메소드에서 클라이언트 측으로 메시지를 보내는 방법

  24. 24

    node.js에서 async.series에 대한 콜백을 정의 할 위치

  25. 25

    Mosquitto MQTT 브로커를 사용하여 LIFO (Last In First Out) 방식으로 메시지를 보내는 방법은 무엇입니까?

  26. 26

    unity3d에서 TLS 사용 브로커에 연결을 시도 할 때 MQTT 시간 초과

  27. 27

    springxd 소스 mqtt를 mqtt 브로커에 등록하는 방법

  28. 28

    C ++ 11에서 스레드가 node.js / javascript 콜백과 비슷한가요?

  29. 29

    Node.js의 일련의 콜백 함수에서 결과 반환

뜨겁다태그

보관