2013-06-21 17 views
5

Trong client ActiveMQ của tôi khi tôi xác định những nhà môi giới mà để kết nối, sự khác biệt giữa quy định cụ thểkhông failover vận chuyển làm gì với một URI đơn

tcp://host:port 

failover:(tcp://host:port) 

Tôi đã thử những gì dừng và bắt đầu môi giới và trong cả hai trường hợp khách hàng tìm lại người môi giới khi nó khởi động lại. Tôi đã không thử nghiệm với các thông điệp trong dòng chảy (tôi đang sử dụng hàng đợi) hoặc thất bại mạng khác để xem nếu có một sự khác biệt.

Hy vọng rằng ai đó có câu trả lời dứt khoát vì tài liệu tôi tìm thấy có chút mơ hồ.

Cảm ơn

+0

Trong trường hợp bất kỳ ai tò mò tại sao tôi hỏi, khách hàng của tôi bị lặp lại EOFExceptions khi tôi sử dụng URI chuyển đổi dự phòng. Thật không may, nó chỉ làm điều này trong một môi trường cụ thể và tôi đang đấu tranh để tái sản xuất nó hoặc hiểu nguyên nhân vì vậy thay vào đó tôi đang cố gắng để hiểu những hậu quả của việc loại bỏ các failover. EOFExceptions có thể là một câu hỏi trong tương lai! –

Trả lời

2

giao thức chuyển đổi dự phòng cũng cho phép bạn cung cấp một số thông số kết nối hữu ích. Ví dụ:

failover:(tcp://host:port)?jms.useAsyncSend=true&timeout=5000 

Ở đây timeout=5000 sẽ đảm bảo giải cứu nỗ lực kết nối ban đầu sau 5 giây nếu người môi giới không có mặt hoặc không trả lời.

+0

Cảm ơn. Cả hai câu trả lời là chính xác, vì vậy tôi đã chọn một câu trả lời hữu ích nhất hữu ích nhất. –

5

Nếu bạn sử dụng chuyển đổi dự phòng, thư viện khách sẽ kết nối lại khi bạn kết nối với máy chủ. Lỗi mạng sẽ bị ẩn khỏi ứng dụng của bạn. Nếu bạn không sử dụng chuyển đổi dự phòng, khi bạn mất kết nối thì ứng dụng của bạn sẽ gặp lỗi JMS cho bạn biết bạn đã mất kết nối.

+0

Cảm ơn. Điều đó làm cho rất nhiều ý nghĩa. –

1

Chuyển đổi dự phòng là rất hữu ích để giải quyết vấn đề môi giới hoặc lỗi hệ thống và cung cấp độ bền.

failover: (tcp: // host1: cổng, tcp: // host2: cổng, tcp: // host3: cổng) jms.useAsyncSend = true & randomize = false

đây? nếu bạn thực hiện ngẫu nhiên = true, thì nó sẽ sử dụng cả 3 nhà môi giới đồng thời và ngẫu nhiên = false nghĩa là sử dụng một nhà môi giới tại một thời điểm và khi nhà môi giới đang chạy đi, chọn bất kỳ nhà môi giới nào từ nhà môi giới đang ngủ. Và useAsyncSend = true sẽ chạy hệ thống nhắn tin theo cách không đồng bộ nhanh hơn so với đồng bộ.

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