나는 다음과 같은 설정에 문제가 있어요 듣고 MDB 인스턴스의 수를 제한하는 방법 :JBoss의 JMS 큐
이 JMS 큐에 이메일 MSG를 보내자바 응용 프로그램이 다음 MDB 대기열을 듣고 onMessage 메소드로 이메일 메시지를 받으면 Gmail SMTP에서 연결을 열고 이메일을 SMTP로 보내고 연결을 닫습니다. JMS 큐의 모든 메시지에서이 작업을 수행합니다.
대기열에 최대 5 개의 메시지가 동시에있을 때 유용합니다. 모든 메시지는 MDB의 5 가지 인스턴스에 의해 동시에 수집되므로 Gmail SMTP 서버에 5 개의 동시 연결이 있습니다. 그러나 JMS 대기열에 메시지가 더 많으면 Gmail SMTP 서버에서 연결 오류가 발생합니다. 첫 번째 메시지 5 개가 올바르게 전송되지만 묶음의 나머지는 전송되지 않으므로 더 이상 큐에 없기 때문에 다른 메시지가 손실됩니다.
제 질문은 JMS 대기열을 수신 대기하는 MDB 인스턴스의 수를 제한 할 수 있습니까? 최대 MDB가 5 인 경우 대기열에 1000 개의 메시지가 있어도 대기열을 비우는 데 시간이 오래 걸리지 만 최소한 메시지는 손실되지 않습니다.
이 문제를 해결하기위한 다른 제안 사항은 매우 만족 스러울 것입니다.
[서버] 릴리스 ID : 보스 [일체] 4.2.3.GA (빌드 : SVNTag = JBoss_4_2_3_GA 날짜 = 200,807,181,417)
및 구성 여기
는 제이보스 버전 의 MDB는 다음과 같습니다 :@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/emailQueue")
})
더 필요합니까?
감사합니다 2011-02-14
편집은 어쩌면 내가 잘못 모든 MDB 인스턴스의 수를 제한하고자 해요. JMS 스레드 수에 대한 설정을 보았습니다. MDB에 게시 할 스레드 수를 제한하면 문제가 해결 될 수 있습니까? 메시지를 다시 게시하기 전에 MDB를 사용할 수있을 때까지 JMS가 대기합니까? 거기에 부작용이 있습니까? 네가 그래. 감사
어떤 버전의 JBoss가 있습니까? MDB 설정은 어떤 모습입니까? – skaffman
@skaffman : Jboss 버전은 다음과 같습니다. [서버] 릴리스 ID : JBoss [Trinity] 4.2.3.GA (빌드 : SVNTag = JBoss_4_2_3_GA date = 200807181417) MDB의 구성은 다음과 같습니다. @MessageDriven ( activationConfig = { @ActivationConfigProperty ( propertyName = "대상 유형", propertyValue = "javax.jms.큐 " ), @ActivationConfigProperty ( propertyName 형식 ="대상 ", 는 PropertyValue ="큐/emailQueue ") } ) 당신이 더 필요하십니까? 감사 – Alain
과 같이 게시 할 때 읽을 아니라, 질문에 정보 추가 덧글 – skaffman