2010-11-04 39 views
8

Thường không khuyến khích sử dụng id tin nhắn được trả về từ nhà cung cấp JMS làm id tương quan với thông điệp được xuất bản lên hàng đợi. Làm cách nào để mọi người tạo id tương quan của họ cho kiến ​​trúc yêu cầu/phản hồi?Tạo ID tương quan JMS

+0

Đó là? Thông số cụ thể đề cập đến việc sử dụng ID tin nhắn làm ID tương quan. Sau đó, nó nói rằng "trong một số trường hợp" một ứng dụng có thể cần phải cuộn ID tương quan của riêng bạn. –

+0

kiểm tra liên kết này. http://www.theserverside.com/discussions/thread.tss?thread_id=44779 – onejigtwojig

+0

Ah - vì vậy, bạn đang xử lý thông số không tuân thủ. Spec quy định khả năng thiết lập trường này vì vậy nếu bạn di chuyển MsgID sang CorrelID và giá trị thay đổi, nó không tuân thủ. Trong một nhà cung cấp tuân thủ, điều này sẽ làm việc như dự định vì MsgID sẽ là duy nhất, ngay cả trên các công cụ tin nhắn, và bạn có thể thiết lập CorrelID một cách đáng tin cậy. Vâng, bạn có thể cần phải cuộn của riêng bạn. –

Trả lời

2

Khách hàng có thể sử dụng tiêu chuẩn ID duy nhất như UUID để tạo ID mới. Here là hướng dẫn tốt cho bạn.

Bạn có thể trả lại id tương quan từ nhà cung cấp JMS bằng cách sử dụng mã sau.

message.setJMSCorrelationID(UUID.randomUUID().toString()); 
producer.send(message); 
LOG.info("jms-client sent:" + message.getJMSCorrelationID()); 

Chúc mừng.

1

Server-side tương quan hệ ID bị hai vấn đề mặc dù:

  1. giao thức một chiều (như JMS) không có phương tiện trực tiếp trở về ID tương quan lại cho khách hàng. Một kênh khác có thể được sử dụng nhưng làm phức tạp mọi thứ.

  2. Sự cố không mong muốn có thể ngăn máy khách nhận được ID được tạo mặc dù yêu cầu đã được chấp nhận và được xử lý trên máy chủ. Đây là lý do tại sao việc tạo ID khách hàng nên xem xét .

khách hàng tạo ra sự tương quan ID

Khách hàng có thể sử dụng một tiêu chuẩn ID duy nhất như UUID để tạo ra một ID mới

message.setJMSCorrelationID(UUID.randomUUID().toString()); 

Ref: http://blogs.mulesoft.com/dev/anypoint-platform-dev/total-traceability/