Prohoster > Blog > quản lý > Hàng đợi và JMeter: chia sẻ với Nhà xuất bản và Người đăng ký
Hàng đợi và JMeter: chia sẻ với Nhà xuất bản và Người đăng ký
Xin chào, Habr! Đây là phần tiếp theo của tôi xuất bản trước, trong đó tôi sẽ nói về các tùy chọn đặt tin nhắn vào hàng đợi bằng JMeter.
Chúng tôi đang tạo một bus dữ liệu cho một công ty liên bang lớn. Các định dạng yêu cầu khác nhau, chuyển đổi, định tuyến phức tạp. Để thử nghiệm, bạn cần gửi nhiều tin nhắn đến hàng đợi. Bằng tay là một nỗi đau mà không phải bác sĩ chỉnh hình nào cũng có thể xử lý được.
Giới thiệu
Mặc dù lúc đầu tôi đã phải chịu đựng nỗi đau này. Tất cả bắt đầu với RFHUtil. Mạnh mẽ nhưng vụng về và đáng sợ: Bạn biết đấy Rus.
Không thể thiếu trong một số trường hợp, nhưng giảm dần trong trường hợp sử dụng tích cực.
Thử nghiệm thuận tiện là không thể với nó.
Với JMeter mọi thứ đã trở nên dễ dàng hơn. Sau giai đoạn đầu làm chủ và làm quen, hy vọng về một cuộc thử nghiệm vui vẻ bắt đầu ló dạng.
Tôi tích cực sử dụng các bộ lấy mẫu của Nhà xuất bản JMS và Người đăng ký JMS. Không giống như JMS Point-to-Point, cặp này có vẻ thuận tiện hơn khi sử dụng. Ví dụ: với Người đăng ký trong JMS Selector bạn có thể chỉ định một biến, nhưng với Point-to-Point thì bạn không thể (hoặc phương pháp này không rõ ràng lắm).
Chuẩn bị dụng cụ lấy mẫu
Nhà xuất bản JMS
Thiết lập - Mỗi mẫu. Apache đề nghị sử dụng tùy chọn này nếu hàng đợi/chủ đề được chỉ định thông qua các biến.
Hết hạn (ms) = 120000. Trong trường hợp thất bại, các yêu cầu kiểm tra sẽ biến mất khỏi hàng đợi sau 2 phút.
Sử dụng chế độ phân phối không liên tục? - ĐÚNG VẬY. IBM phê chuẩnchế độ liên tục đó đảm bảo việc lưu giữ tin nhắn được truyền đi một cách đáng tin cậy trong trường hợp có sự cố đột ngột. Và trao đổi nhanh hơn ở chế độ không liên tục. Đối với mục đích thử nghiệm, tốc độ là quan trọng hơn.
Trong mỗi Nhà xuất bản, tôi đặt thuộc tính jms mà Người đăng ký sẽ sử dụng trong Bộ chọn JMS. Đối với mỗi lần gửi, một giá trị ngẫu nhiên được tạo trong phần tử kế hoạch kiểm tra Thông số người dùng:
Bằng cách này bạn có thể chắc chắn rằng tin nhắn chính xác đã được đọc.
“Trống” cuối cùng của Nhà xuất bản JMS được định cấu hình trước:
Người đăng ký JMS
Thiết lập - Mỗi mẫu. Vâng, bạn hiểu.
Thời gian chờ (ms) = 100000. Nếu yêu cầu không đến hàng đợi sau 100 giây chờ đợi thì đã xảy ra lỗi.
Dừng giữa các mẫu? - ĐÚNG VẬY.
JMS Selector - khá tiện lợi một mảnh. Người đăng ký JMS cuối cùng:
Cách xử lý bảng chữ cái Cyrillic trong tin nhắn được truyền đi. Trong JMeter, mặc định sau khi hiệu đính sẽ hiển thị không đều. Để tránh điều này và tận hưởng sự vĩ đại và quyền năng mọi lúc, mọi nơi, bạn cần phải:
Thêm một đối số JVM vào “trình khởi chạy” JMeter:
-Dfile.encoding=UTF-8
Thêm JSR223 PostProcessor vào Người đăng ký với dòng hấp dẫn:
prev.setDataEncoding("UTF-8")
Gửi tin nhắn
Lựa chọn lười biếng nhất. Thích hợp để gỡ lỗi các bài kiểm tra mới được viết. Hoặc đối với những trường hợp bạn cần gửi ít nhất một thứ gì đó nhỏ. Chọn tùy chọn Nguồn tin nhắn - Textarea và đặt nội dung tin nhắn vào một khối văn bản:
Chuyển một tập tin
Tùy chọn phổ biến nhất. Thích hợp cho hầu hết các kịch bản. Chọn tùy chọn Nguồn tin nhắn - Từ tập tin và chỉ ra đường dẫn đến tin nhắn trong trường Tệp - Tên tệp:
Chuyển tập tin sang trường văn bản
Tùy chọn linh hoạt nhất. Thích hợp cho hầu hết các tình huống + có thể được sử dụng trong JMS Point-to-Point khi không có tùy chọn gửi thứ hai:
Truyền một mảng byte
Lựa chọn khó khăn nhất. Thích hợp để kiểm tra việc truyền yêu cầu xuống byte một cách chính xác đến từng byte mà không bị biến dạng, SMS và nhiễu loạn. Bạn sẽ không thể thực hiện việc này trong JMeter mặc định. đây Tôi chắc chắn đã được thông báo về điều này.
Vì vậy tôi đã phải tải xuống nguồn và sửa đổi mã Người đăng ký JMS.
Thay thế trong phương pháp extractContent(..) đường kẻ:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
Tôi đã mô tả bốn cách để gửi tin nhắn đến hàng đợi mà tôi sử dụng hàng ngày trong thực tế. Tôi hy vọng thông tin này làm cho cuộc sống của bạn dễ dàng hơn. Tiếp theo, tôi dự định nói về trải nghiệm của mình khi thử nghiệm một sàn giao dịch trong đó có hàng đợi ở một đầu và cơ sở dữ liệu hoặc hệ thống tệp ở đầu kia.
Tiết kiệm thời gian của bạn. Và cảm ơn sự quan tâm của bạn.