2011-01-18 35 views
5

Tôi đang sử dụng hàng đợi JMS và MDB nghe nó. Tôi có một cơ chế thử lại, vì vậy khi ngoại lệ được ném trở lại giao dịch sẽ xảy ra và hoạt động sẽ được thực hiện lại/Truy xuất số lượng tin nhắn JMS thử lại

Tôi muốn đạt được Message_retry_number, mỗi lần "onMessage" được thực thi, vì vậy tôi có thể viết số thực thi lại hiện tại. Tôi nghe nói rằng tôi có thể lấy nó thông qua Tiêu đề của đối tượng tin nhắn, nhưng không thể tìm thấy bất cứ điều gì trong các thuộc tính hoặc trong mạng.

bất kỳ ai có bất kỳ đầu mối nào?

Cảm ơn, ray.

Trả lời

10

Xem javax.jms.Message.getIntProperty. Tên thuộc tính là "JMSXDeliveryCount".

+0

wow, yer goood :) cảm ơn. – rayman

1

Cách tiêu chuẩn duy nhất để làm điều này là xem xét thuộc tính JMSXDeliveryCount. Tuy nhiên, bạn nên lưu ý rằng đặc tả JMS quy định rằng các thuộc tính được xác định JMS (bắt đầu bằng JMSX) là tùy chọn - vì vậy nó phụ thuộc vào nhà cung cấp cụ thể của bạn cho dù thuộc tính này có được hỗ trợ hay không.

0

Từ oracle hướng dẫn [https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#BNCEH] phần 45.3.7.2 nhắn Thuộc tính:

Các JMS API cung cấp một số tên thuộc tính được xác định trước đó bắt đầu với JMSX. Một nhà cung cấp JMS là cần thiết để thực hiện chỉ một trong những, JMSXDeliveryCount (trong đó xác định số lần một tin nhắn đã được giao); phần còn lại là tùy chọn. Việc sử dụng các thuộc tính được xác định trước này hoặc thuộc tính do người dùng định nghĩa trong các ứng dụng là tùy chọn.

triển khai JMSXDeliveryCount là bắt buộc và nó sẽ chứa thông tin bạn cần.

Các vấn đề liên quan