2012-04-27 3 views
1

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!"); 
     } 

답변

1

당신은 서버에 대한 로그를 얻을하지 않습니다는 서버의 측면에 연결이 끊어지고.

클라이언트 실패 검사 기간 및 기타 ping 매개 변수를 사용해 보았습니까?

VM 설정은 어떻게됩니까?

어떻게 메시지를 확인하십니까? 나는 당신이 그것을 거래로 창조 한 것을 본다. 메시지를 수신 할 때 TX를 보내겠습니까?

+0

연결 해제에 대한 서버 측 로그가 보이지 않습니다. 연결 해제에 대한 메시지는 클라이언트와 클라이언트가 다시 연결할 수 없다고 말하기 전에 서버를 중지 할 때만 볼 수 있습니다. 텍사스에 관해서는, 나는 그것을 얻 자마자 각 메시지를 받아들이고있다. – FloppyDisk

+0

복제 할 방법이 없거나 더 많은 정보가있는 경우에만 추측 할 수 있습니다. 우리는 이와 같은 시나리오를 테스트했으며 어떤 문제도 발견하지 못했습니다. 내 생각 엔 페이징이 구성되지 않았으며 다른 구독으로 인해 시스템이 차단되고 있다는 것입니다. 가입을 만들지 않았거나 잊어 버렸는지 확인하거나 페이징을 구성해야합니다. 더 많은 정보를 제공 할 수있는 hornetq 사용자 포럼으로 토론을 시작하십시오. –

+0

나는 오늘 또는 내일 아침에 그곳에서 저기에 실을 시작할 것이다. 감사! – FloppyDisk