2012-12-11 27 views
15

Trong khi định cấu hình hàng đợi JMS trên JBoss 7 với HornetQ (dựa trên cấu hình standalone-full.xml), tôi nhận thấy thuộc tính 'bền'.Ý nghĩa của thuộc tính 'bền' cho Hàng đợi JMS trong JBoss 7 với HornetQ là gì?

enter image description here

Tôi duyệt nhiều nguồn và nhiều trong số họ tuyên bố hàng đợi luôn 'bền', có nghĩa là thông báo sẽ luôn luôn được giao, ngay cả trong trường hợp máy thu tiềm năng đang hoạt động tại thời điểm gửi.

Thuộc tính này trong JBoss 7 HornetQ có liên quan đến hàng đợi tạm thời không? Hoặc thuộc tính này có đề cập đến một số loại hàng đợi không bền lâu không?

Trả lời

13

Sau khi điều tra ngắn gọn, tôi đã đưa ra một vài kết luận. Tất cả các quan sát được dựa trên JBoss 7.1.1.Final với HornetQ Server 2.2.13.Final.

  • Hàng đợi không bền không phải là hàng đợi tạm thời. Nó tồn tại cho đến khi nó được xóa theo cách thủ công.

  • Tất cả thư được gửi tới hàng đợi không bền sẽ biến mất khi khởi động lại/thất bại của nhà cung cấp JMS (chế độ phân phối, tức là PERSISTENT/NON_PERSISTENT của các thư đã gửi bị bỏ qua).

  • Giá trị của phần tử tiêu đề JMSDeliveryMode của thư không được sửa đổi. Đặc biệt, nếu thư được gửi với chế độ phân phối PERSISTENT đến hàng đợi không bền, cờ được đặt thành PERSISTENT, mặc dù hàng đợi không bền không tồn tại thông báo (nó bị mất trong trường hợp khởi động lại/thất bại của nhà cung cấp JMS)).

Từ phía máy khách, có vẻ như khách hàng tiềm năng đáng lo ngại, vì người gửi có khả năng không biết liệu chế độ gửi thư được khai báo sẽ không được tôn trọng, do ý nghĩa của vấn đề hàng đợi 'không bền'.

Hơn nữa, thuật ngữ 'hàng đợi lâu' trong ngữ cảnh này có vẻ khác biệt với 'đăng ký bền', vì dường như không ảnh hưởng đến việc gửi thư đến người tiêu dùng không hoạt động theo bất kỳ cách nào.

10

Đăng ký bền trong JMS có nghĩa là nếu thuê bao bị ngắt kết nối và sau đó kết nối lại với đích JMS (hàng đợi hoặc chủ đề), nó sẽ nhận được tất cả tin nhắn đã được gửi đến đích đến nay và chưa hết hạn.

+3

Chỉ cần lưu ý, thuộc tính trên JBoss xuất hiện để chỉ một hàng đợi, chứ không phải là người đăng ký/đăng ký. – acalypso

15

Tôi cảm thấy từ "Bền" được áp dụng nhiều hơn cho Chủ đề hơn hàng đợi. Một thuê bao bền là một trong những nơi mà các ấn phẩm cho một thuê bao được lưu trữ bởi nhà cung cấp tin nhắn khi thuê bao đó không hoạt động. Sau khi thuê bao hoạt động, các tin nhắn được lưu trữ này sẽ được gửi tới người đăng ký đó. Đối với người đăng ký không bền sẽ không nhận được bất kỳ ấn bản nào nếu họ không hoạt động.

Đối với Hàng đợi, các thư được giữ trong hàng đợi cho đến khi ai đó nhận được chúng hoặc chúng hết hạn. Các tin nhắn có thể liên tục có nghĩa là chúng sẽ tiếp tục khởi động lại nhà cung cấp tin nhắn và không liên tục nơi các tin nhắn bị mất khi nhà cung cấp tin nhắn bị hỏng.

+0

Cảm ơn thông tin, như đã đề cập đến hầu hết các nguồn đề xuất hàng đợi là 'bền' theo mặc định. Đó là lý do tại sao tôi tự hỏi ý nghĩa của hàng đợi không bền trong bối cảnh HornetQ trên JBoss 7. Tôi đã thử một vài ví dụ và sẽ đăng các quan sát của tôi như là một câu trả lời. – acalypso

+1

@Shashi Lý do/giải thích để nói rằng độ bền là áp dụng nhiều hơn cho các chủ đề hơn là xếp hàng? – Geek

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