2.3 Các chức năng cơ bản của IBM Websphere MQ
2.3.4 Truyền thông giữa các bộ quản lý hàng đợi
Trên mỗi hệ thống, chúng ta cần xác định các đối tƣợng:
- Định nghĩa một hàng đợi từ xa (remote queue) giống nhƣ hàng đợi cục bộ ở phía nhận và kết nối tới một hàng đợi vận chuyển (Q1 trong hệ thống A và Q2 trông hệ thống B).
- Hàng đợi vận chuyển chứa tất cả các thông điệp sẽ đƣợc gửi tới hệ thống từ xa cho đến khi kênh truyền chúng đi (QMB trong hệ thống A, và QMA trong hệ thống B).
- Kênh gửi lấy tất cả các thông điệp đƣợc gửi cho hệ thống từ xa và truyền chúng tới hệ thống khác sử dụng mạng đã có (QMA.QMB trong hệ thống A và QMB.QMA trong hệ thống B).
- Kênh nhận lấy tất cả các thông điệp và đặt chúng vào một hàng đợi cục bộ (QMB.QMA trong hệ thống A và QMA.QMB trong hệ thống B). Các kênh nhận có thể đƣợc khởi động một cách tự động bởi bộ quản lý hàng đợi khi chế độ định nghĩa từ động kênh (Channel Auto Definition) đƣợc thiết lập.
- Hàng đợi cục bô từ chƣơng trình nhận các thông điệp của nó (Q2 trong hệ thống A và Q1 trong hệ thống B).
Trong mỗi hệ thống, chúng ta phải định nghĩa các đối tƣợng quản lý hàng đợi tƣơng ứng. Các đối tƣợng này đƣợc định nghĩa trong 2 tệp, nội dung thể hiện nhƣ sau:
Hình 2.16: Các kênh triggering[7]
Chƣơng trình gửi một lệnh MQPUT vào một hàng đợi từ xa và một thông điệp đƣợc đặt trong hàng đợi vận chuyển. Khi bộ quản lý hàng đợi đặt một thông điệp vào trong hàng đợi vận chuyển nó sẽ kiểm tra kiểu của trigger trong định nghĩa hàng đợi. Phụ thuộc vào định nghĩa này và có bao nhiêu thông điệp trong hàng đợi mà nó đặt một thông điệp bổ sung vào kênh khởi tạo. Ngƣời dùng sẽ không nhận thấy thông điệp trigger này. Vì bộ phận khởi tạo kênh đã đƣợc khởi động trƣớc đó, nên nó sẽ theo dõi hàng đợi khởi động kênh và xóa các thông điệp trigger. Bộ phận khởi tạo kênh kích hoạt tác tử kênh thông điệp – MCA. Hệ thống kênh nhận thông điệp từ hàng đợi vận chuyển. Thông điệp đƣợc đƣa ra khỏi mạng tới đích đến.
Kênh thông điệp
Hình 2.17: Kết nối mạng WebSphere MQ
Khi một hệ thống đƣa ra lời gọi MQPUT, thông điệp đƣợc chuyển đến hàng đợi vận chuyển. MCA khởi động, đọc dữ liệu từ hàng đợi và gửi cho MCA cần nhận dữ liệu. MCA nhận dữ liệu đặt thông điệp nhận đƣợc vào các hàng đợi đích. Đôi khi hệ thống nhận sử dụng MQGET, đọc dữ liệu thông điệp từ hàng đợi. Các kênh thông điệp cung cấp cơ chế truyền qua mạng giữa các bộ quản lý hàng đợi, cơ chế kết nối giữa các hệ thống và một giao thức giữa MCA gửi và nhận.
Các loại kênh
Mỗi kênh thông điệp có một cặp MCA – một MCA gửi và một MCA nhận. Nhìn chung, mỗi kênh phải đƣợc xác định ở cả 2 đầu, và tên của kênh cũng là tên ở hai đầu của kênh. Khi một kênh đƣợc xác đinh tại một đầu, nó phải đƣợc xác định một nhƣ là một phần của định nghĩa của kênh đó. Có 6 loại kênh để lựa chọn:
• Sender • Receiver • Requester • Server • Svrconn • Clntconn
Các kiểu kênh ở cả 2 đầu kênh đều phải tƣơng thích với nhau. Sự kết hợp tƣơng thích của các loại kênh, có thể liệt kê nhƣ sau:
• Sender - receiver
Bên gửi khởi động kênh có thể gửi thông điệp cho hệ thống khác. Bến gửi yêu cầu bên nhận ở đầu bên kia của kênh khởi động. Bên gửi gửi thông điệp từ hàng đợi vận chuyển đến bên nhận. Bên nhận đặt thông điệp vào hàng đợi đích. Hình dƣới đây là sơ đồ mô hình kênh sender-receiver.
Hình 2.18: Kênh Sender – Receiver
• Requester - server
Bên yêu cầu khởi động kênh và do đó có thể nhận thông điệp từ hệ thống khác. Server gửi thông điệp đến cho bên yêu cầu từ hàng đợi vận chuyển xác định trong kênh của nó. Một server cũng có thể khởi tạo kết nối và gửi thông điệp đến cho bên yêu cầu nhƣng thƣờng chỉ áp dụng cho những server đƣợc trang bị đầy đủ (các kênh server có tên kết nối của bên kết nối tƣơng ứng đã đƣợc chỉ trong định nghĩa kênh). Một server đủ điều kiện cũng có thể đƣợc bên yêu cầu khởi động, hoặc có thể khởi tạo một kết nối với bên yêu cầu.
Hình dƣới đây là sơ đồ kênh requester – server.
• Requester - sender
Bên yêu cầu khởi động kênh và bên gửi dừng lời gọi. Bên gửi khởi động kết nối theo thông tin trong định nghĩa kênh. Nó gửi thông điệp từ hàng đợi vận chuyển đến bên yêu cầu.
Hình 2.20: Kênh Request – Sender
• Server - receiver
Kênh này cũng giống nhƣ kênh sender – receiver nhƣng chỉ áp dụng đối với các server có đủ điều kiện. Kênh đƣợc khởi tạo tại server ở cuối kết nối.
• Clntconn - svrconn
Sự kết hợp này chỉ để sử dụng trong môi trƣờng MQI ở các máy trạm. Máy trạm khởi động kết nối khi câu lệnh MQCONN đƣợc phát ra. Luồng dữ liệu đi theo hai hƣớng. Kêt nối dừng khi có câu lênh MQDISC.