나는 그것을 찾아서 두 시스템 사이에 메시지를 보내는 데 사용되었습니다.
그런데 왜? 왜 그냥 사용하지 Database
않겠습니까?
일부 기능이 있어야 ActiveMQ
이있다 Databases
하지?
나는 그것을 찾아서 두 시스템 사이에 메시지를 보내는 데 사용되었습니다.
그런데 왜? 왜 그냥 사용하지 Database
않겠습니까?
일부 기능이 있어야 ActiveMQ
이있다 Databases
하지?
답변:
두 분산 프로세스간에 안정적으로 통신하는 데 사용됩니다.
예, 당신은 메시지를 저장할 수있는 데이터베이스 메시지가 당신이해야 할 것 접수되는 즉시, 두 프로세스 사이에 통신 할 수 있지만 DELETE
, 메시지 수단 행 그건 INSERT
및 DELETE
각 메시지를. 초당 수천 개의 메시지를 전달
하는 규모 를 확장 하려고하면 데이터베이스가 무너지는 경향이 있습니다.
ActiveMQ
반면에 메시지 지향 미들웨어 [MOM] 은 이러한 사용 사례를 처리하기 위해 구축되었습니다.
그들은 정상적인 시스템의 메시지가 매우 빨리 삭제 될 것이며 오버 헤드를 피하기 위해 최적화를 수행 할 수 있다고 가정합니다 .
또한 소비자가 SQL 쿼리를 수행하여 새 메시지를 폴링해야하는 대신 소비자에게 메시지를 푸시 할 수도 있습니다.
이는 시스템으로 전송되는 새 메시지 처리와 관련된 대기 시간을 더욱 줄여줍니다.
ActiveMQ
또는 일반적으로 모든 MOM (Message Oriented Middleware) 구현은 두 응용 프로그램 또는 한 응용 프로그램 내부의 두 구성 요소간에 메시지 를 보내기 위해 설계되었습니다 .
기본적으로 MOM과 데이터베이스는 읽고 쓸 수있는 트랜잭션 및 영구 데이터 저장소를 제공한다는 점에서 공통 기반을 공유합니다.
가장 큰 차이점은 사용 패턴입니다. 데이터베이스가 매우 일반적이고 여러 테이블에 대한 복잡한 검색에 최적화 된 경우 MOM은 패션 [Queue]와 같은 FIFO에서 한 번에 하나씩 메시지를 읽는 데 최적화되어 있습니다.
JMS
ActiveMQ가 구현하는 API는 Java Enterprise 애플리케이션의 중요한 초석입니다. 이렇게하면 메시지가 다소 공통된 형식과 의미를 공유하므로 서로 다른 응용 프로그램 간의 통합이 더 쉬워집니다.
물론, 더 자세한 만의 ActiveMQ에있는 기능과 같은 와이어 프로토콜이 많이있다 OpenWire
, STOMP
그리고 MQTT
, JMS
, EIP
함께 아파치 낙타, 클러스터링, "공개 / 등록"JMS 브리지를 "요청 / 응답"와 같은 메시지 패턴 (와 "은 네트워크 중개자 "), 확장 및 배포 등을 허용합니다.
관심이있는 경우 해당 주제가 다소 크기 때문에 약간 읽어야합니다.
ActiveMQ
큰있다 스케줄러 을 수행 할 수 있습니다 수단 지원, 특정 시간에 전달되는 메시지를 보내는 일정을 .
우리는이 기능을 사용하여 의료 시나리오에서 약물 세부 정보를 업로드하는 환자에게 약물 알림을 보냅니다.
Scheduled Jobs
동일한 목적으로 Oracle 데이터베이스 를 사용했습니다 .
RDBMS를 사용하면 데이터 행을 처리 할 때 일반적으로 처리가 반복되지 않도록 행이 처리되었음을 나타내는 플래그를 업데이트합니다.
그러나 Message Queue에서는 메시지를 확인하기 만하면 다음 소비자가 다음 메시지를 처리합니다.
차이점은 UPDATE
RDBMS 의 문장이 acknowledge
in activmeq에 비해 정말 느린 작업 이라는 것입니다.
다음을 강조하고 싶습니다.
분리됨 : 시스템이 연결되지 않고 통신 할 수 있습니다. 큐는 시스템 사이에 있으며, 통신은 큐를 통해 수행되므로 한 시스템 오류가 다른 시스템에 영향을 미치지 않습니다. 시스템은 작동 중일 때 계속 작동합니다.
복구 지원 : 큐 자체의 메시지가 지속되었습니다. 큐가 실패하면 나중에 메시지를 복원 할 수 있습니다.
안정적인 통신 : 클라이언트 요청을 처리하는 시스템을 고려하십시오. 정상적인 경우 시스템은 분당 100 개의 요청을받습니다. 이 시스템은 요청 수가 평균을 초과하면 신뢰할 수 없습니다. 이러한 경우 Queue는 요청을 관리 할 수 있으며 시스템 처리량에 따라 메시지를 중단하지 않고 주기적으로 푸시 할 수 있습니다.
비동기 : 클라이언트 서버 통신이 차단되지 않습니다. 클라이언트가 서버에 요청을 보내면 응답을 기다리지 않고 다른 작업을 수행 할 수 있습니다. 응답을 받으면 클라이언트는 언제든지 처리 할 수 있습니다.
에서 위키 백과
Apache ActiveMQ는 전체 JMS (Java Message Service) 클라이언트와 함께 Java로 작성된 오픈 소스 메시지 브로커입니다. 이 경우 하나 이상의 클라이언트 또는 서버에서 통신을 촉진하는 것을 의미하는 "엔터프라이즈 기능"을 제공합니다.
귀하의 쿼리와 관련하여 :
왜 데이터베이스를 사용하지 않습니까?
임시 데이터가 아닌 영구 데이터에 데이터베이스를 사용해야합니다. 보낸 사람에서받는 사람에게 메시지를 보내야한다고 가정합니다. 메시지 수신시 수신자는 하나의 작업 (수신, 처리 및 삭제)을 실행합니다. 해당 메시지를 처리 한 후에는 해당 메시지가 전혀 필요하지 않습니다. 이 경우 영구 데이터베이스에 메시지를 저장하는 것은 올바른 해결책이 아닙니다.
메시징 시스템 대신 데이터베이스를 사용하는 경우 데이터베이스에 메시지 삽입 및 삭제에 관한 @Hiram Chirino 답변에 전적으로 동의 합니다.
ActiveMQ에는 데이터베이스가없는 기능이 있어야합니다.
많이있다. 자세한 내용 은 문서 페이지를 참조하십시오. 사용 사례 도 살펴보십시오 .
이 프레젠테이션 을 통해 ActiveMQ의 내부를 이해하십시오.