문제

나는 그냥 읽어도에 대한 JMS 고 아파치 ActiveMQ.과 궁금 무엇을 실제 사용하는 사람들이 여기에 사용되는 JMS 또는 유사한 메시지 큐 기술니까?

도움이 되었습니까?

해결책

JMS (ActiveMQ는 JMS 브로커 구현)를 비동기 요청 처리를 허용하는 메커니즘으로 사용할 수 있습니다. 요청을 완료하는 데 오랜 시간이 걸리거나 여러 당사자가 실제 요청에 관심이 있기 때문에이를 수행 할 수 있습니다. 이를 사용하는 또 다른 이유는 여러 클라이언트 (잠재적으로 다른 언어로 작성)가 JMS를 통해 정보에 액세스 할 수 있도록하는 것입니다. ActiveMQ는 Stomp 프로토콜을 사용하여 C#/Java/Ruby 클라이언트에서 액세스 할 수 있기 때문에 여기에서 좋은 예입니다.

실제 예제는 특정 고객을위한 주문을하는 데 사용되는 웹 응용 프로그램의 예입니다. 해당 순서를 배치하고 데이터베이스에 저장하는 데는 여러 가지 추가 작업을 수행 할 수 있습니다.

  • 주문을 일종의 타사 백엔드 시스템 (SAP 등)에 저장하십시오.
  • 고객에게 이메일을 보내 주문을 받았습니다.

이를 위해 응용 프로그램 코드는 주문 ID가 포함 된 JMS 큐에 메시지를 게시합니다. 큐를 듣는 응용 프로그램의 한 부분은 OrderID를 취하고 데이터베이스에서 주문을보고 다른 타사 시스템으로 주문하여 이벤트에 응답 할 수 있습니다. 신청서의 다른 부분은 OrderID를 가져 와서 확인 이메일을 고객에게 전송하는 책임이있을 수 있습니다.

다른 팁

항상 사용하여 장기 실행 작업을 비동기로 처리하십시오. 웹 사용자는 처리 요청을 위해 5 초 이상 기다리기를 원하지 않습니다. 그보다 더 긴 실행이있는 경우 하나의 디자인은 요청을 큐에 제출하고 작업이 완료된시기를 확인할 수있는 URL을 즉시 보내는 것입니다.

게시/구독은 많은 수신기의 발신자를 분리하기위한 또 다른 좋은 기술입니다. 가입자가 필요에 따라 와서 갈 수 있기 때문에 유연한 아키텍처입니다.

나는 JMS에 많은 놀라운 용도를 가지고있었습니다.

  • 고객 서비스를위한 웹 채팅 커뮤니케이션.

  • 백엔드의 디버그 로깅. 모든 앱 서버는 다양한 수준에서 디버그 메시지를 방송했습니다. 그런 다음 JMS 클라이언트를 시작하여 디버그 메시지를 감시 할 수 있습니다. 물론 나는 같은 것을 사용할 수있었습니다 syslog, 그러나 이것은 문맥 정보 (앱 서버 이름, API 호출, 로그 레벨, 사용자 ID, 메시지 유형 등)를 기반으로 출력을 필터링하는 모든 종류의 방법을 제공했습니다. 나는 또한 출력을 채색했다.

  • 파일에 로깅을 디버깅합니다. 위와 마찬가지로 필터를 사용하여 특정 조각 만 꺼내고 일반 로깅을 위해 파일에 기록되었습니다.

  • 경고. 다시 말하지만, 위의 로깅과 유사한 설정, 특정 오류를보고, 다양한 수단 (이메일, 문자 메시지, IM, Growl Pop-Up ...)을 통해 사람들에게 경고합니다.

  • 소프트웨어 클러스터를 동적으로 구성하고 제어합니다. 각 앱 서버는 "구성"메시지를 방송 한 다음 모든 종류의 구성 정보가 포함 된 메시지로 응답하는 구성 데몬입니다. 나중에 모든 앱 서버에 구성이 필요한 경우 구성 데몬에서 구성을 수행 할 수 있습니다.

  • 그리고 평소 - 청구, 주문 처리, 프로비저닝, 이메일 생성과 같은 지연된 활동에 대한 대기열 거래 ...

메시지를 비동기 적으로 전달하도록 보장하고 싶은 곳이면 좋습니다.

분산 (a) 동기 컴퓨팅.
실제 예제는 응용 프로그램 사용 과정에서 다양한 지점에서 이해 관계자에게 메일을 보내는 응용 프로그램 전체 알림 프레임 워크 일 수 있습니다. 따라서 응용 프로그램은 a로 작동합니다 Producer 생성으로 Message 객체, 특정에 넣습니다 Queue, 그리고 앞으로 나아가.
세트가있을 것입니다 Consumer누가 구독 할 것입니다 Queue 문제가 있으며, 치료를주의해야합니다 Message 보냈습니다. 이 거래 과정에서 Producers는 주어진 방법의 논리에서 분리됩니다. Message 처리 될 것입니다.
메시징 프레임 워크 (ActiveMQ 및 Likes) Message 제공하여 거래 MessageBroker에스.

나는 그것을 사용하여 다른 펀드 관리 시스템들 사이에서 정맥 내 거래를 보내는 데 사용했습니다. 훌륭한 기술 메시징이 무엇인지에 대해 더 배우고 싶다면 책을 철저히 추천 할 수 있습니다. "엔터프라이즈 통합 패턴". 요청/답장 및 게시/구독과 같은 것들에 대한 JMS 예제가 있습니다.

메시징은 통합을위한 훌륭한 도구입니다.

우리는이를 사용하여 기존 거래와 중단하거나 충돌하지 않는 비동기 처리를 시작합니다.

예를 들어, "구매"와 같은 비싸고 매우 중요한 논리가 있다고 가정 해 봅시다. 우리는 알림 통화를 비동기로 만든다. 최종 결과, 구매 완료, 사용자가 행복하고, 우리는 돈을 받고, 대기열은 배달을 보장하기 때문에 상점이 열리는 즉시 또는 대기열에 새 항목이있는 즉시 상점에 알림을받습니다.

내가 사용한 그것을 위해 내는 학술 프로젝트는 온라인 소매는 웹사이트와 비슷하지 아니한다.JMS 었을 처리하는 데 사용되는 다음과 같은 기능:

  1. 업데이트는 위치의 주문에 의해 고객의 발송물에서 여행 중 하나에 위치합니다.이를 위해 지속적으로 보내는 메시지를 JMS 큐가 있습니다.
  2. 경고에 대해 어떤 특별한 이벤트가 같은 발송물을 얻을 지연한 후 이메일 발송하여 고객입니다.
  3. 전달된다면 목적지에 도달을 전송,배달의 이벤트입니다.

우리는 여러한 구현 원격 클라이언트가 연결되어 있는 메인 서버입니다.는 경우 연결을 사용할 수 있는,그들은에 액세스하는 데 사용하는 주요한 데이터베이스는 사용하지 않는 경우 자신의 데이터베이스입니다.을 처리하기 위해 데이터를 일관성 우리는 구현했 2PC 메커니즘이 있습니다.이를 위해,우리가 사용 JMS 교환 사이에서 메시지를 이러한 시스템에 i.전자 행동 하나로 코디네이터들이 프로세스를 시작해 보내는 메시지 큐에 및 다른 사람이 그에 따라 반응을 보내시는 메시지 큐에.다른 사람으로는 이미 언급하고,이와 비슷한 pub/sub 모델입니다.

나는 다른 상업 및 학업 프로젝트에서 JMS를 사용하는 것을 보았습니다. JMS는 완전히 분리 된 분산 시스템을 원할 때마다 쉽게 사진에 들어올 수 있습니다. 일반적으로, 하나의 노드에서 요청을 보내야 할 때, 네트워크의 누군가가 발신자에게 수신기에 대한 정보를 제공하지 않고도 관리합니다.

내 경우, 나는 논문에서 메시지 지향 미들웨어 (MOM)를 개발하는 데 JMS를 사용했는데, 특정 유형의 객체 지향 객체가 요청에 따라 한쪽에서 생성되고 다른 쪽에서 응답으로 컴파일되고 실행됩니다. .

아파치 낙타 ActiveMQ와 함께 사용되는 엔터프라이즈 통합 패턴을 수행하는 좋은 방법입니다.

우리는 온라인 따옴표를 생성하기 위해 메시징을 사용했습니다

우리는 신뢰할 수없는 네트워크를 통해 수많은 원격 사이트에서 시스템과의 통신을 위해 JMS를 사용하고 있습니다. 안정적인 메시징과 함께 느슨한 커플 링은 안정적인 시스템 환경을 생성합니다. 각 메시지는 기술적으로 가능한 한 빨리 전송됩니다. 네트워크의 더 큰 문제는 전체 시스템 환경에 영향을 미치지 않습니다 ...

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