Thuật ngữ hàng đợi(queue) đƣợc sử dụng thƣờng xuyên trong Websphere MQ, tuy nhiên trong các ngữ cảnh khác nhau thì thuật ngữ này có ý nghĩ khác nhau.
Đối tƣợng hàng đợi (Queue object): Các đối tƣợng hàng đợi là các đối tƣợng đƣợc xác đinh trong phạm vi một bộ quản lý hàng đợi và có thể xác định đƣợc tên đối tƣợng khi thực hiện một lời gọi MQOPEN trên bộ quản lý hàng đợi đó. Chúng đƣợc xác định và quản trị bởi MQSC hoặc là MQ Explorer. Có một số loại đối tƣợng hàng đợi. Các đối tƣợng này thể hiện rõ hàng đợi thực sự nào có thể chứa thông điệp, hoặc là một phƣơng thức tìm kiếm đích của một hàng đợi khác trong hạ tầng Websphere. Tất cả các đối tƣợng hàng đợi có thể đƣợc biểu diễn trong MQSC sử dụng kiểu hàng đợi chung nhất. Mỗi kiểu hàng đợi riêng đƣợc mô tả chi tiết hơn dƣới đây.
Đối tƣợng hàng đợi chứa các thông điệp
Chỉ có một loại đối tƣợng hàng đợi thực sự biểu diễn một hàng đợi trong phạm vi bộ quản lý hàng đợi có thể lƣu giữ các thông điệp. Đó là đối tƣợng hàng đợi cục bộ (local queue).
Các hàng đợi vận chuyển(transmission queue) là các hàng đợi trung gian giữa các bộ quản lý hàng đợi và là các trƣờng hợp đặc biệt của các hàng đợi cục bộ.
Các hàng đợi cục bộ đƣợc xác đinh một cách rõ ràng trong một bộ quản lý hàng đợi.
Các hàng đợi cục bộ có thể đƣợc xác định một cách động từ các đối tƣợng hàng đợi mẫu(model queue), bằng việc sử dụng lời gọi hàm MQOPEN với tên của hàng đợi mẫu. Các hàng đợi cục bộ thƣờng đƣợc gọi là các hàng đợi động (dynamic queue) nếu nó đƣợc xác định động, các hàng đợi này bị xóa đi với khi gọi hàm MQCLOSE, còn trong trƣờng hợp là hàng đợi động tạm thời (temporary dynamic queue) nếu chúng có thể bị xóa tự động bởi bộ quản lý hàng đợi khi các ứng dụng ngắt kết nối.
a. Phân tích tên của hàng đợi
Khi một ứng dụng gửi một thông điệp, đích đến có thể là một hàng đợi trên cùng một bộ quản lý hàng đợi mà ứng dụng đƣợc kết nối. Tuy nhiên, nó cũng có thể là một đích của một bộ quản lý khác trong hạ tầng Websphere MQ. Bộ quản lý hàng đợi mà ứng dụng đã kết nối phải biết các thông điệp đƣợc chuyển nhƣ thế nào tới bộ quản lý hàng đợi ở xa. Đồng thời cũng phải có một hàng đợi đƣợc thiết kế để lƣu
giữ các thông điệp tạm thời đang di chuyển đến đích, gọi là một hàng đợi vận chuyển.
Quá trình phân tích thông tin đích đến, đƣợc cung cấp bởi một ứng dụng tới đích tiếp theo cho các thông điệp trong hành trình tới đích của chúng đƣợc gọi là sự phân tích tên hàng đợi. Quá trình phân tích này xảy ra với một bộ quản lý hàng đợi mỗi lần một thông điệp đƣợc nhận từ một ứng dụng hoặc một bộ quản lý hàng đợi khác.
Mỗi lần thực hiện lời gọi hàm MQOPEN để mở một hàng đợi trƣớc khi đặt các thông điệp, quá trình phân tích đã đƣợc thực hiện bởi bộ quản lý hàng đợi. Thông tin này đƣợc cung cấp trong cấu trúc MQMD của tham số lời gọi hàm.
Sau khi quá trình phân tích đƣợc thực hiện, một ứng dụng có thể đặt các thông điệp tới đích đã đƣợc phân tích bằng lời gọi hàm MQPUT. Điều này tạo ra một trong những hành động sau sẽ đƣợc thực hiện bởi bộ quản lý hàng đợi.
Nếu quá trình phân tích tên hàng đợi đã xác định hàng đợi đích là cục bộ với bộ quản lý hàng đợi thì thông điệp sẽ đƣợc đặt trực tiếp lên hàng đợi đó.
Nếu quá trình phân tích xác định đích đến nằm trên một bộ quản lý khác thì thông điệp sẽ đƣợc đặt trên một hàng đợi vận chuyển. Bƣớc này đòi hỏi phải có thêm thông tin đƣợc thêm vào thông điệp sao cho quá trình phân tích tên có thể đƣợc thực hiện một lần nữa khi thông điệp tới bộ quản lý hàng đợi từ xa. Thông tin này đƣợc gọi là một tiêu đề hàng đợi vận chuyển(transmission queue header).
Hình 2.11: Quá trình phân tích tên hàng đợi[6]
b. Các đối tƣợng hàng đợi cục bộ và các hàng đợi vận chuyển
Các đối tƣợng hàng đợi cục bộ chỉ là loại đối tƣợng đối tƣợng hàng đợi biểu diễn một hàng đợi thực sự lƣu giữ các thông điệp. Một ví dụ đơn giản của việc sử dụng một hàng đợi cục bộ là nhiều ứng dụng giao tiếp một cách bất đối xứng trên cùng một máy. Các ứng dụng đặt các thông điệp và lấy thông điệp từ cùng hàng đợi cục bộ. Các kiểu đối tƣợng hàng đợi khác có thể đƣợc xem nhƣ các phƣơng thức cho việc tạo ra các hàng đợi cục bộ, phân tích tên và vị trí của các hàng đợi cục bộ, hoặc là định tuyến các thông điệp giữa các hàng đợi cục bộ.
Hình trên cho thấy một ứng dụng đặt một thông điệp vào hàng đợi cục bộ. Trong trƣờng hợp này, sự phân tích tên của hàng đợi đơn giản là phân tích tên đối tƣợng (object name) đƣợc xác định cho hàng đợi cục bộ bằng việc sử dụng các đối tƣợng hàng đợi cục bộ định trƣớc.
Hình 2.12: Sử dụng hàng đợi cục bộ[6]
c. Các hàng đợi vận chuyển
Thuộc tính USAGE của một đối tƣợng hàng đợi cục bộ có thể đƣợc sử dụng để thiết kế một hàng đợi cục bộ nhƣ là một hàng đợi vận chuyển. Để thực hiện điều này, thiết lập giá trị của thuộc tính USAGE của hàng đợi cục bộ là XMITQ. Khi hàng đợi cục bộ đã trở thành một hàng đợi vận chuyển thì các ứng dụng không thể đặt các thông điệp vào hàng đợi một cách trực tiếp. Quá trình vận chuyển của thông điệp từ một hàng đợi tới một bộ xử lý hàng đợi từ xa đƣợc thực hiện bởi một kênh thông điệp (message channel). Chúng ta sẽ đề cập đến kênh thông điệp ở phần sau. Việc định nghĩa một hàng đợi vận chuyển cung cấp một bộ quản lý hàng đợi với việc các thông điệp đƣợc định tuyến nhƣ thế nào tới một bộ quản lý hàng đợi đích đơn lẻ. Các thông điệp đƣợc gửi với một tên của bộ quản lý hàng đợi đối tƣợng (object queue mananger name) giống nhƣ tên của hàng đợi vận chuyển. Vì lý do
này, tên của hàng đợi vận chuyển và tên của bộ quản lý hàng đợi từ xa thƣờng là phù hợp. Bộ quản lý từ xa này cũng cho phép một định tuyến đƣợc xác định rõ ràng ngay cả trong trƣờng hợp hai tên là không phù hợp.
Hình dƣới đây biểu diễn một ứng dụng gửi một thông điệp và xác định tên bộ quản lý hàng đợi. Thông điệp đƣợc đặt trên hàng đợi vận chuyển bởi vì tên bộ quản lý hàng đợi đối tƣợng và tên của hàng đợi vận chuyển là phù hợp.
Hình 2.13: Sử dụng hàng đợi vận chuyển[6]
d. Các đối tƣợng hàng đợi từ xa
Các đối tƣợng hàng đợi từ xa đƣợc sử dụng để xác định đƣờng đi tới các bộ quản lý hàng đợi khác trong hạ tầng Websphere MQ. Các đối tƣợng này cũng ánh xạ tên bộ quản lý hàng đợi và các hàng đợi vận chuyển và ánh xạ các tên hàng đợi với các tên hàng đợi khác ở các bộ quản lý hàng đợi từ xa.