2013-02-18 4 views
1

내가 대기열을 일시 정지하도록 지시하기 위해, ActiveMQ를 브로커 관리 명령을 찾고 있었다 - 즉 :대기열을 브로커 기능으로 일시 중지하는 이유는 무엇입니까?

  • 성장을 큐 백 로그를 허용,
  • 중단 소모 고객에게 제공하는 생산 클라이언트로부터 메시지를 받아 계속 대기열이 재개 될 때까지, 백 로그가 클라이언트로 전송됩니다.

해당 명령을 찾을 수 없습니다. 가장 일반적인 대답은 클라이언트 측에서 관리해야한다는 것입니다. 즉, 모든 소비자를 찾아서 중지해야합니다. 클라이언트와 브로커가 더 이상 통신 할 수 없도록 네트워크 라우트 나 방화벽을 조작하는 등의 다른 해결책이있었습니다.

다른 메시지 대기열에 대한 간략한 조사에 따르면 ActiveMQ가 이와 관련하여 비정상적이지 않음을 나타냅니다. 그것은 나에게 보인다

이 기능이 구현되지 않을 수 있습니다 두 가지 이유가 있습니다 :

  • 구현하기 어려운 -하지만 난 어떤 이유 생각할 수 없다.
  • 이 메시지의 디자인 철학이
그 것이다

, 그 이유를 큐에 카운터?

답변

4

구현하기에는 너무 복잡하지 않을 것 같습니다. 수요가 없는지 여부에 대한 적극적인 디자인 결정인지는 확실하지 않습니다. IBM WebSphere MQ와 같은 다른 유사한 제품은 대기열에 "get/put inhibited"기능을 구현하므로 메시징 철학에 완전히 반대하지는 않습니다. 실제 시스템을 작동하고 문제를 해결하는 도구 일뿐입니다.

나는 약간 편향되어 있지만, 실제로는 수신자로부터 수신자를 분리하려고합니다 (두 시스템이 다를 경우 결국 전환/업그레이드/변경 될 수 있습니다 ..).

시스템을 쉽게 분리하고 원하는 것을 수행 할 수있는 방법은 보낸 사람을 하나의 대기열 "DATA.OUT"에 보내고 수신자는 다른 "DATA.IN"을 들으려고하는 것입니다. 그런 다음 일반적으로 ActiveMQ와 함께 번들로 제공되는 Apache Camel을 사용하여 DATA.OUT에서 DATA.IN으로 라우팅하는 엔터프라이즈 통합 패턴을 얻을 수 있습니다.

Camel Route는 JMX를 통해 시작/중지 할 수 있으며 설명 된 것과 비슷한 결과를 얻을 수 있습니다.

필자는 ActiveMQ 디자인을 문제 삼아 큐에서 직접 실행하는 대신 Apache Camel과 같은 미들웨어 계층에서 이러한 종류의 작업을 수행했다고 생각합니다.

4

큐를 일시 중지 할 수있는 것은 새로 출시 된 ActiveMQ 5.12에서 지원됩니다.0 :

대기열은 "일시 중지없는"경우 : 큐

  • 능력에 대기열 될

  • 메시지 여전히 준 소비자에게 전송

    • NO 메시지 대기열을 탐색 할 수 있어야합니다.

    • 에 대한 모든 JMX 카운터 사용할 수 있고 올바른 큐.

  • ...

    일시 정지 할 때, 일반 큐 소비자에게 더 파견이없는

    구현 일시 정지/다시 시작/isPaused 큐보기 MBean의 작전 및 속성, 을 보내고 정상적으로 작업을 찾습니다. 기내 메시지는 평소와 같이 기내까지 계속됩니다. (

    curl --user admin:admin http://127.0.0.1:8161/api/jolokia/exec/org.apache.activemq:brokerName=localhost,destinationName=myQueue,destinationType=Queue,type=Broker/pause 
    

    : 당신이 Jolokia 당신은 대기열을 일시 중지하려면 다음 컬 요청 같은 것을 사용할 수 있습니다, (내가 요즘 기본적으로 활성화되어 생각)을 사용하는 경우

    https://issues.apache.org/jira/browse/AMQ-5229를 참조하십시오 기본 사용자 이름, 암호 및 브로커 이름 및 myQueue라는 대기열 사용)

    대기열을 다시 시작하려면 "일시 중지"를 "재개"로 바꿉니다.

    +3

    이론적으로 질문에 대답 할 수 있지만 여기에 대답의 핵심 부분을 포함하고 참조 할 수있는 링크를 제공하는 것이 좋습니다 (// meta.stackoverflow.com/q/8259). –

    +0

    나는이 의견들에 동의하지만, 여전히 헤드 업에 감사하고있다. 감사. – slim

    +0

    코드 샘플이 있습니까? 이 기능을 활용해야합니다 –

    관련 문제