JBoss 서버 (최종 7.1.1)가 게시 한 지속성 주제를 읽기 위해 독립 실행 형 HornetQ (v2.2.13) 소비자를 사용하고 있습니다. 모두는 몇 시간 (2-6 사이) 동안 잘 진행되고 소비자는 주제에서 메시지를받는 것을 멈 춥니 다. 서버의 로그 파일에서 파이프 아래로 데이터가 계속 펌핑되지만 소비자 로그 파일은 클라이언트가 데이터 읽기를 중지했다는 것을 나타냅니다. 클라이언트에서 마지막으로 주제를 벗어난 메시지를 읽은 시간은 12:00:00이었고 마지막으로 메시지를 주제에 푸시 한 시간을 나타내는 서버 로그는 14:00:00이었습니다.HornetQ Consumer N 시간 이후에 메시지 수신
HornetQ 구성을 조정 해 보았지만 지속 가능한 기간 동안 작동하지 않는 것 같습니다.
주제와 통신하는 데 사용하는 코드는 다음과 같습니다. 세션을 생성하고 시작
private TransportConfiguration getTC(String hostname) {
Map<String,Object> params = new HashMap<String, Object>();
params.put(TransportConstants.HOST_PROP_NAME, hostname);
params.put(TransportConstants.PORT_PROP_NAME, 5445);
TransportConfiguration tc = new TransportConfiguration(NettyConnectorFactory.class.getName(), params);
return tc;
}
private Topic createDestination(String destinationName) {
Topic topic = new HornetQTopic(destinationName);
return topic;
}
private HornetQConnectionFactory createCF(TransportConfiguration tc) {
HornetQConnectionFactory cf = HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType .CF, tc);
return cf == null ? null : cf;
}
코드 :
TransportConfiguration tc = this.getTC(this.hostname);
HornetQConnectionFactory cf = this.createCF(tc);
cf.setRetryInterval(4000);
cf.setReconnectAttempts(10);
cf.setConfirmationWindowSize(1000000);
Destination destination = this.createDestination(this.topicName);
logger.info("Starting Topic Connection");
try {
this.connection = cf.createConnection();
connection.start();
this.session = connection.createSession(transactional, ackMode);
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
logger.info("Started topic connection");
} catch (Exception ex) {
ex.printStackTrace();
logger.error("EXCEPTION!");
}
연결 해제에 대한 서버 측 로그가 보이지 않습니다. 연결 해제에 대한 메시지는 클라이언트와 클라이언트가 다시 연결할 수 없다고 말하기 전에 서버를 중지 할 때만 볼 수 있습니다. 텍사스에 관해서는, 나는 그것을 얻 자마자 각 메시지를 받아들이고있다. – FloppyDisk
복제 할 방법이 없거나 더 많은 정보가있는 경우에만 추측 할 수 있습니다. 우리는 이와 같은 시나리오를 테스트했으며 어떤 문제도 발견하지 못했습니다. 내 생각 엔 페이징이 구성되지 않았으며 다른 구독으로 인해 시스템이 차단되고 있다는 것입니다. 가입을 만들지 않았거나 잊어 버렸는지 확인하거나 페이징을 구성해야합니다. 더 많은 정보를 제공 할 수있는 hornetq 사용자 포럼으로 토론을 시작하십시오. –
나는 오늘 또는 내일 아침에 그곳에서 저기에 실을 시작할 것이다. 감사! – FloppyDisk