2016-10-10 7 views

ответ

1

enter image description here , чтобы сделать это, Вы можете просматривать темы ActiveMQ.Advisory.MessageConsumed.Topic.YourTopicName или для очереди с помощью JConsole или VisualVM, это возможно Экспертного сообщение http://activemq.apache.org/advisory-message.html и вам необходимо включить это в брокерской конфигурации путем добавления этого:

<destinationPolicy> 
     <policyMap> 
      <policyEntries> 
      <!-- http://activemq.apache.org/advisory-message.html --> 
      <policyEntry topic=">" advisoryForConsumed="true" /> 
      <policyEntry queue=">" advisoryForConsumed="true" /> 
      </policyEntries> 
     </policyMap> 
    </destinationPolicy> 

код для просмотра консультативных сообщений.

 Destination advisoryDestination = AdvisorySupport.getMessageDeliveredAdvisoryTopic(destination); 
     Destination advisoryDestination = AdvisorySupport.getMessageDiscardedAdvisoryTopic(destination); 
     Destination advisoryDestination = AdvisorySupport.getMessageConsumedAdvisoryTopic(destination); 
     MessageConsumer consumer = session.createConsumer(advisoryDestination); 
     consumer.setMessageListener(this); 

     public void onMessage(Message msg){ 
      String messageId = msg.getJMSMessageID(); 
      String orignalMessageId = msg.getStringProperty(org.apache.activemq.advisory.AdvisorySupport.MSG_PROPERTY_MESSAGE_ID); 
      if (msg instanceof ActiveMQMessage){ 
       try { 
        ActiveMQMessage aMsg = (ActiveMQMessage)msg; 
        ConsumerInfo consumerInfo = (ConsumerInfo) aMsg.getDataStructure(); 
       } catch (JMSException e) { 
        log.error("Failed to process message: " + msg); 
       } 
      } 
     } 
+0

hi hassen, не могли бы вы сообщить мне, что это поле, которое покажет сообщение, которое было потреблено потребителем и идентификатором сообщения? И какое сообщение, которое не было потреблено потребителем – srinathshil

+0

, заключается в том, что 'ActiveMQ.Advisory.MessageConsumed' является темой, и если нет подписки, сообщения будут потеряны, решение, если вам нужно просмотреть их jconsole, - это дубликаты сообщений от этой темы до пользовательской очереди с помощью перехватчиков верблюдов или AMQ, или вы используете какой-то код для их просмотра. для просмотра отброшенных сообщений вы можете подписаться на «ActiveMQ.Advisory.MessageDiscarded.Topic». Я обновляю ответ с помощью некоторого кода. –

+0

Можем ли мы просматривать данные очереди i.e полезную нагрузку, отправленную потребителю производителем на 1 сервере и полезную нагрузку, потребляемую потребителем на другом сервере? – srinathshil