문제

Java에서 경량 메시징 프레임 워크를 찾고 있습니다. 저의 임무는 SEDA의 방식으로 이벤트를 처리하는 것입니다. 처리의 일부 단계가 신속하게 완료 될 수 있고 다른 단계는 이러한 처리 단계를 분리하고 싶다는 것을 알고 있습니다.

구성 요소 A와 B와 처리 엔진 (이 컨테이너 또는 기타 기타)이 있다고 가정 해 봅시다. 구성 요소 A를 호출하는데, 이는 구성 요소 B의 실행 시간이 2s이지는 않지만 실행시 신경 쓰지 않는 경우. 예를 들어 구성 요소 A의 시간은 50ms 미만입니다. 따라서 구성 요소 A가 B에 메시지를 제출하는 것이 가장 합리적 인 것 같습니다. B는 원하는 시간에 처리 할 B가 처리됩니다.

다른 JMS 구현과 Apache ActiveMQ를 알고 있습니다. 가벼운 메시징 (메시지 직렬화 및 가장 간단한 라우팅과 같은 기본 기능)을 검색했습니다.

이 문제에서 추천 할 것이 있습니까?

도움이 되었습니까?

해결책

어떤 종류의 끈기가 필요합니까 (예 : JVM이 수천 개의 메시지를 처리하는 사이에 사망하는 경우) 다른 JVM으로 이동하려면 메시지가 필요합니까?

JVM이 사망하면 거래, 복구 또는 메시지 손실에 대해 걱정할 필요가 없다면 Chris가 위에서 말했듯이 집행자는 괜찮습니다.

ActiveMQ는 매우 가볍습니다. 원하는 경우 지속성없이 단일 JVM에서만 사용할 수 있습니다. 그런 다음 필요할 때 트랜잭션 / 지속성 / 복구 / 리모 팅 (여러 JVMS에서 작업)을 활성화 할 수 있습니다. 그러나 이러한 것들 중 아무것도 필요하지 않으면 과잉 - 집행자를 사용하십시오.

우연히도 어떤 단계가 지속성/신뢰성이 필요한지 확실하지 않은 경우 여러 JVM에 대한로드 밸런싱이 다음과 같습니다. 미들웨어 사용을 완전히 숨 깁니다 따라서 실행자와 함께 JMS/ActiveMQ로 Memory SEDA 대기열을 전환 할 수 있습니다.

예를 들어 일부 단계는 신뢰할 수 있고 복구 할 수 있어야합니다 (따라서 어떤 종류의 지속성이 필요합니다) 다른 경우에는 그렇지 않습니다.

다른 팁

진짜 가벼운 중력? 집행자. :-) 그래서 당신은 집행자 (B, 설명에서 B)를 설정하고 단순히 실행자에게 작업을 제출합니다.

Apache Camel이 귀하의 모든 요구를 다루고 있다고 생각합니다. JVM 내에서 작동하며 SEDA 스타일을 지원합니다 (http://camel.apache.org/seda.html)) 및 심피 라우팅. JMS 제공 업체 또는 기타 어댑터와 함께 자체 또는 스프링과 함께 사용할 수 있습니다.

오래된 실을 부활 시켜서 죄송하지만 다른 사람이 그것을 읽는 데 도움이 될 수도 있습니다 ... FFMQ 가벼운 메시징 프레임 워크의 좋은 후보입니다.

업데이트 : 그러나 재 전달 지연 (데드 레터 큐에 문제)을 지원하는지 확실하지 않습니다. 나는 경량 제공 업체에게도 사용할 수 있다고 생각합니다. 그러나 MessageSelector 쿼리와 메시지 속성의 조합으로 가능할 수 있다고 생각합니다.

다른 사람에게 도움을 받으려면이 스레드를 읽으십시오.
가장 가벼운 메시징 프레임 워크 중 하나는입니다 Mbasseder. MBASSADOR는 Publish 구독 패턴에 따른 매우 가벼운 메시지 (이벤트) 버스 구현입니다. 사용 편의성을 위해 설계되었으며 리소스 효율성과 성능을 유지하면서 풍부하고 확장 가능한 기능을 목표로합니다.
MBASSADOR의 고성능의 핵심은 동시 액세스의 성능 저하가 최소화되도록 잠금 경합을 최소화하는 특수한 데이터 구조입니다.
특징 : 주석, 동기화 및/또는 비동기 이벤트 전달, 약한 참조, 메시지 필터링을 통한 선언적 청취자 정의

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