2010-06-29 4 views
1

은 내가 JMS 주제를 듣고 자바 클래스 Processor을 가지고 있고 메시지 그래서 우리는 동시 가기로 결정했습니다 도착하는 속도로 계속 어려움을 겪고 :비 EJB로드 균형 조정 응용 프로그램을 설계하는 방법은 무엇입니까?

주제에 대한 하나의 클래스 듣기 누가 작업을하는지는 작업자 스레드 풀에 메시지를 전달하여 효과적으로로드 밸런서가되는 것입니다. 또한 동일한 고객에 대해 2 명의 작업자가 메시지를 처리하는 것을 방지해야합니다.

나는 이것에 대해 인터넷에 많은 정보를 기대했지만, 모든 것이 응용 프로그램 서버가 풀을 관리하고 균형을 조정하는 EJB의 사용을 제안하는 것으로 보입니다. 나는 이것이 정말로 공통적 인 문제 일 것이라고 확신하지만 어떤 라이브러리 나 디자인 패턴을 찾지 못하는 것 같습니다. 나는 그것보다 더 많이 만들고 그냥 내 자신의 코드를 탐구하고 작성해야합니까?

+0

프로세서가 응용 프로그램 서버 외부의 독립 실행 형 클라이언트로 실행되고 있습니까? – JoseK

+0

네, 지금이 순간입니다. 서버 측을 실행하여 웹 응용 프로그램이 나중에 쿼리 할 수있는 데이터베이스를 채 웁니다. – James

답변

0

이것은 청취자 풀로 해결하기 쉬운 문제입니다. 이것이 앱 서버가 당신을 위해 무엇을 할 것인가입니다.

나는 좋은 응용 프로그램 서버를 얻고 MDB를 사용하여이를 빨리 해결할 수 있습니다. 수영장의 크기를 유지하면 괜찮을 것입니다.

자신 만의 코드 작성을 고집한다면 좋은 오픈 소스 풀 구현을 사용하고 사용하십시오.

EJB가 아닌 경우 Spring을 사용해야합니다. 그것은 당신이 필요로하는 것일 수있는 메시지 기반 POJO를 가지고 있습니다.

1

왜 주제 대신 대기열을 사용하고 동일한 응용 프로그램의 여러 인스턴스에서이 대기열의 메시지를 처리하지 않는 이유는 무엇입니까?

+0

우리가 지금 당장 주제를 가지고있는 이유는 메시지를 필터링하는 애플리케이션이 여러 개 있기 때문에 메시지가 100 개 밖에 없기 때문입니다. 당신은 좋은 지적을 가지고 있습니다, 우리가 계속 지킬 수 있다면 주제는 불필요합니다. 그러나 동일한 고객을 처리하는 두 인스턴스를 방지하려면 중간에 앉아 있어야합니다. – James

+0

@James : "고객"이 무슨 뜻인지 모르시겠습니까? 고객마다 여러 메시지가 있습니까 ??? "메시지 선택자"를 사용하여 소비자 당 메시지를 필터링 할 수 있습니다. – pgras

+0

메시지에 customerId가 있습니다. 많은 인스턴스가 메시지를 처리하므로 많은 고객 ID가 처리됩니다. 내가 설명하려고했던 것은 동일한 고객 ID가 동시에 2 개의 인스턴스에 의해 처리되지 않아야한다는 것이 었습니다. 따라서 어떤 종류의 잠금 및 메시지 우선 순위 지정이 필요합니다. 즉, '중간에 앉아야'합니다. 내가 쓴대로? – James

관련 문제