Tôi đang làm việc trên một ứng dụng bao gồm một số mô-đun. Trong một trong những mô-đun đó, một người nào đó đã tạo ra một nhà sản xuất chủ đề xuất bản các tin nhắn về một chủ đề, nhưng mô-đun này không có chủ đề tiêu dùng để loại bỏ các thông điệp. Nhà sản xuất chủ đề đặt thuộc tính thời gian hoạt động thành 300000 mili giây bằng cách sử dụng setTimeToLive()
.Thời gian chủ đề JMS để sống
Tôi hy vọng rằng nếu không có người tiêu dùng, các tin nhắn hết hạn trong vòng 300.000 mili giây và chúng được deallocated.
Ứng dụng được triển khai trên Tomcat 6.0.36 và ứng dụng này sử dụng máy chủ ActiveMQ bên ngoài để xử lý hàng đợi và chủ đề.
Giám sát ActiveMQ với Java VisualVM trong tab MBeans trong cài đặt chủ đề Tôi thấy rằng biến "Số đếm enqueue" tăng lên, nhưng tôi không hiểu liệu cài đặt thời gian có hiệu lực trên các thư này hay không. Tôi dự kiến sẽ thấy bộ đếm "ExpiredCount" để tăng, nhưng nó vẫn cố định tới 0.
Có cách nào để hiểu xem những tin nhắn đó vẫn còn trong bộ nhớ hoặc nếu chúng được deallocated?
Cảm ơn bạn rất nhiều!
EDIT:
tôi đã một số xét nghiệm sử dụng ví dụ j2ee hướng dẫn về NetBeans 7.3 sử dụng nội glassfish 3.1 như máy chủ, theo dõi nó với jvisualvm và tất cả các công trình như api nói:
Các JMS API không cung cấp cơ chế duyệt chủ đề. Tin nhắn thường biến mất khỏi chủ đề ngay khi chúng xuất hiện: nếu không có người tiêu dùng tin nhắn nào để tiêu thụ chúng, nhà cung cấp JMS sẽ xóa chúng. Mặc dù các đăng ký bền cho phép các tin nhắn duy trì trên một chủ đề> trong khi người tiêu dùng tin nhắn không hoạt động, không có cơ sở nào tồn tại để kiểm tra chúng.
Tôi đọc rằng glassfish sử dụng bên trong activeMQ vì vậy tôi hy vọng rằng điều này cũng hợp lệ cho một máy chủ ActiveMQ độc lập.
END EDIT.
Chủ đề có bền không? – Beryllium
Tôi làm cách nào để xem cài đặt này? –
Bạn đang sử dụng 'topicSession.createSubscriber (...)' hoặc 'topicSession.createDurableSubscriber (...)'? – Beryllium