2012-01-26 40 views
5

Điều gì sẽ xảy ra với các tin nhắn được đăng lên một chủ đề ảo khi không có người tiêu dùng nào nghe? Liệu các nhà môi giới giữ chúng trong một thời gian nhất định cho đến khi một thuê bao có sẵn?Chủ đề/hàng đợi và độ bền ảo

Cụ thể hơn: Tại thông báo T0 và T1 M0 và M1 được đăng. Tại T2, người tiêu dùng C1 kết nối, anh ta sẽ nhận được M0 và M1? Rõ ràng là các thông điệp M2 và M3 được đăng tại T3 và T4 sẽ được nhận bởi C1, nhưng một người tiêu dùng mới, C2, kết nối với máy thu T5 là gì? Tất cả tin nhắn, M2 và M3 hoặc không có gì?

+0

Tôi sẽ phải hỏi, bạn đã thử những gì cho đến nay? – Eugene

+0

chưa có thời gian để thử, sẽ làm. Chỉ có một điều lý thuyết cho tôi bây giờ, nhưng tôi sẽ cần phải biết –

Trả lời

4

Tùy thuộc vào bản chất của chủ đề: nếu chủ đề bền (có người tiêu dùng bền vững đăng ký), nhà môi giới sẽ giữ các tin nhắn trong chủ đề cho đến khi tất cả người tiêu dùng bền sử dụng tin nhắn. nếu chủ đề không bền (không có người tiêu dùng bền), tin nhắn thậm chí sẽ không được gửi đến chủ đề, vì sẽ không có đăng ký bền.

Ví dụ của bạn, tôi sẽ cân nhắc rằng bạn đang sử dụng thuê bao bền/người tiêu dùng: Trường hợp 1:

  • T-2 C1 và C2 làm cho thuê bao bền đến chủ đề
  • T-1 C1 và C2 ngắt kết nối
  • T0: M0 được đăng
  • T1: M1 được đăng
  • T2: C1 nối. C1 nhận M0 và M1
  • T3: M3 được đăng. C1 nhận M3
  • T4: M4 được đăng. C1 nhận M4
  • T5: C2 nối, C2 nhận M0, M1, M2, M3, M4

Đó là bởi vì họ đang nắm giữ durable subscriptions Bạn cần phải rất cẩn thận khi sử dụng chủ đề bền/hàng đợi: nếu người tiêu dùng không hủy đăng ký, người môi giới sẽ giữ tin nhắn cho đến khi cửa hàng tin nhắn phát nổ. Bạn sẽ cần phải chắc chắn rằng nó không xảy ra (bằng cách thiết lập eviction policies và/hoặc đặt một Thời gian để sống trên các tin nhắn). Tất nhiên ví dụ trước sẽ thay đổi tùy theo người tiêu dùng thực hiện đăng ký bền.

Nếu bạn đang sử dụng chủ đề không bền:

  • T-2 C1 và C2 làm cho thuê bao thông thường đối với chủ đề
  • T-1 C1 và C2 ngắt kết nối
  • T0: M0 được đăng
  • T1: M1 được đăng
  • T2: C1 kết nối. C1 không nhận được bất kỳ điều gì
  • T3: M3 được đăng. C1 nhận M3
  • T4: M4 được đăng.C1 nhận M4
  • T5: C2 nối, C2 không nhận được bất cứ điều gì
0

Tại sao không thể có được một người quan sát/quan sát mẫu - dùng ví dụ trên:

Khi M0 là đăng, C1 và C2 (người tiêu dùng đã đăng ký) được đánh thức và có thể tiêu thụ sự kiện này? Tôi thấy mô hình này tốt hơn so với bền và không bền - một phương pháp lai.

1

Có hai cách để cho phép các tin nhắn được xuất bản lên một chủ đề ảo để sinh động. Người đầu tiên là thông qua thuê bao bền và khác là nhà xuất bản gửi tin nhắn với chế độ giao hàng "PERSISTENT". Khi tin nhắn được xuất bản với chế độ phân phối của "PERSISTENT", tin nhắn sẽ được lưu trên đĩa, nếu không, nó sẽ được lưu trong bộ nhớ.

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