ActiveMQ 메시지 영수증 이벤트 이벤트 초당 하나의 메시지 만 있습니까?

StackOverflow https://stackoverflow.com/questions/390044

  •  23-08-2019
  •  | 
  •  

문제

ActiveMQ를 기반으로 응용 프로그램 인프라를 구축했습니다.

우리는 메시지를 잘 보내고받을 수 있으며 대부분의 경우 꽤 빠르고 괜찮습니다.

그러나 우리는 "한 번에"메시지 배치를 제출하면 5,000 개의 메시지를 제출하면 ActiveMQ가 다른 쪽 끝의 타사 응용 프로그램에 메시지를 가져 오면이 응용 프로그램도 매우 빠르게 처리 할 것임을 알았습니다. 그리고 그것은 1 분 미만이라고 말하면서 회신을 중개인에게 빨리 다시 대기시킬 것입니다.

그러나 어떤 이유로, 처음에 메시지를 시작한 vb.net exe는 불규칙하게 수신하는 반환 메시지를 처리하는 것으로 보이며, 때로는 초당 약 1 시간 정도, 때로는 한 시간 정도 휴식을 취한 다음 다시 돌아갑니다. 초당 하나.

Origin (VB.NET EXE which we manage) 
    -> Broker  (which we manage)
        -> (3rd party app) 
            -> back to the same broker 
                -> back to the origin app.

수신기는 9 개월 전에 ActiveMQ에서 다운로드 한 C# 코드의 이벤트 Messagelistener를 기다리고 있습니다.

Public Delegate Sub MessageListener(ByVal message As NMS.IMessage)
     Member of: NMS

무슨 일이 일어나고 있는지 Messagelistener는 우리에게 하나의 메시지 (nms.imessage) 만 씹을 수있는 것입니다. 그래서 그것이 우리가 처리하는 것입니다.

"Messagelistener 이벤트에서, 지금 대기열에 다른 메시지가 있는지 확인하고 모두를하십시오"라고 말할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

우리는 이것이 무엇인지 조금 더 알고 있다고 생각합니다.

activemq dll을 사용하는 vb.net winforms 앱은 결국 일주일에 몇 번 수행하는 경향이 있는데, 우리는 Winternals PSList 및 PSKill 유틸리티를 사용하여 좀비를 거두고 새 클라이언트를 시작하는 Watchdog 프로그램이 있습니다. 연결.

이런 일이 발생하면 JCONSOLE을 사용하여 브로커를 분석하면 좀비 세션이 여전히 등록되어 있으며 새로운 고객도 마찬가지입니다.

내 이론은 AMQ가 두 세션을 모두 볼 때 두 세션 라운드 로빈 스타일에 메시지를 배포하기 시작한다는 것입니다. AMQ는 메시지를 좀비에 보내려고합니다. 일정량의 시간 (아마도 1 초) AMQ가 포기하고 목록의 다음 세션 인 새로운 신선한 고객으로갑니다.

어느 시점에서 브로커 또는 TCP 스택은 아마도 좀비가 TCP 연결을 활성화하지 않았고 포기하지 않았을 것입니다. 그런 다음 작동은 정상으로 돌아갑니다.

따라서 질문은 ActiveMQ 클라이언트를 작성하는 방법 a) a) 죽지 않거나 b) 우아하게 죽고, 프로세스에서 세션을 종료합니까?

편집 : 다음 버전의 ActiveMQ로 업그레이드하면이를 해결했습니다. 또한 우리는 하나의 앱을 보내고 수신하는 것을 가지고 있었지만 스레드 사페가 아니 었습니다. 그래서이를 보내려고하는 동안 받으면 충돌이 발생했습니다. 우리는 그것을 두 개의 콘솔 앱으로 다시 작성했습니다. 하나는 데이터를 보냈고 하나는 데이터를 수신 한 것입니다. 더 이상 충돌이 없습니다. 또한 당시 우리가 사용했던 ActiveMQ의 이전 버전은 충돌을 우아하게 처리하지 않았으며 4.x로 업그레이드하면이를 해결했습니다.

다른 팁

이것을보고하는 것이 좋습니다 사용자 포럼 아마도 a 지원 문제 이것은 NMS 클라이언트 코드와 관련하여 문제가 될 수 있으며 모든 NMS 개발자가 해당 목록에 있으며 응답 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top