Lập trình phân tán theo chủ đề JMS
Lập trình phân tán theo chủ đề - JMS Cao Tuấn Dũng Trịnh Tuấn Đạt Vũ Hương Giang Nội dung Truyền thông điệp Các mô hình, tính tin dùng, giao dịch, truyền thông điệp phân tán, an toàn Tại cần truyền thông điệp JMS Kiến trúc JMS APIs Lập trình JMS Các bước viết JMS clients (bộ gửi nhận) Các đặc tính JMS Truyền thông điệp gì? Truyền thông điệp (messaging) Mô hình ứng dụng liên kết lỏng với thông qua việc chuyển giao thông điệp tự - mô tả Hệ thống truyền thông điệp Truyền thông kết nối lỏng (Loose coupled) Truyền thông không đồng Thông điệp phương tiện giao tiếp ứng dụng Các thuật ngữ gần nghĩa: MOM (Message Oriented Middleware) Messaging system Messaging server Messaging provider JMS provider Thực thể truyền thông Các sinh thông điệp – producers Các nhận thông điệp – consumers Sự khác Producer/Consumer client/server Truyền thông - n, n - 1, n – n Phía sinh không cần quan tâm tới phía nhận Liên kết lỏng Về không gian: Bộ sinh nhận không kết nối trực tiếp qua kênh truyền thông Về thời gian: Không cần biết đến danh tính Thời gian truyền thông điệp không xác định Bộ sinh /nhận có mặt thời điểm Về cú pháp: S/N không liên kết qua API chung (khác với RMI) Kênh truyền thông Mô hình Đẩy Sinh/Kênh – chủ động Mô hình lai 10 Cách thức durable subscription làm việc Một durable subscription có subcriber active thời điểm Một durable subscriber đăng ký durable subscription việc định danh lưu trữ JMS provider Các đối tượng subscriber sau có định danh bắt đầu lại subscription trạng thái subscriber trước Nếu durable subscription susbcriber active nào, JMS provider lưu thông điệp subscription chúng nhận subscription hết hạn 128 6.3.6 Giao dịch JMS 129 Giao dịch JMS Phạm vi giao dịch client hệ thống thông điệp, client nhóm thông điệp phát đơn vị (từ phía gửi) nhóm thông điệp nhận lại đơn vị (từ phía nhận) Các giao dịch “Local” “Distributed” 130 Giao dịch cục JMS Các giao dịch cục điều khiển đối tượng Session Giao dịch bắt đầu session tạo Không có phương thức “bắt đầu giao dịch” tường minh Giao dịch kết thúc gọi Session.commit() Session.abort() Transactional session tạo cách định cờ thích hợp tạo session QueueConnection.createQueueSession(true, ) TopicConnection.createTopicSession(true, ) 131 Giao dịch phân tán JMS Được điều hành transactional manager Các ứng dụng điều khiển giao dịch qua phương thức JTA Cấm sử dụng Session.commit() Session.rollback() 132 6.3.7 Message Selector 133 JMS Message Selector (Receiver) JMS application sử dụng chọn để lấy thông điệp quan tâm Một chọn xâu SQL92, rõ luật chọn (hay lọc) 134 Ví dụ: JMS message selectors Bộ chọn tham chiếu đến nội dung thông điệp Có thể truy cập tới properties header Ví dụ JMSType==’wasp’ phone LIKE ‘223’ price BETWEEN 100 AND 200 name IN(‘sameer’,’tyagi’) JMSType IS NOT NULL 135 Xử lý ngoại lệ exception sở: JMSException Các lớp kế thừa: IllegalStateException, InvalidClientIDException, InvalidDestinationException, InvalidSelectorException, JMSSecurityException, MessageEOFException, MessageFormatException, MessageNotReadableException, MessageNotWriteableException, ResourceAllocationException, TransactionInProgressException, TransactionRolledBackException 136 Các đặc tính thông điệp không định nghĩa JMS 137 Các đặc tính thông điệp không định nghĩa JMS Encryption Điều khiển truy cập JMS giả thiết hệ thống thông điệp xử lý JMS giả thiết hệ thống thông điệp xử lý Load balancing Quản trị queue topic 138 Xử lý giao dịch boolean transactionMode=true; javax.jms.Session session; session=connection.createSession(transaction Mode, ackMode); session.commit(); session.rollback(); 139 Phụ lục Kiến trúc ứng dụng JMS JMS Application (JMS Client) JMS API (vendor neutral) JMS Application (JMS Client) JMS API (vendor neutral) JMS provider (vendor specific) JMS provider (vendor specific) Mesaging service 142 [...]... tương tác nhận/gửi thông điệp JMS hỗ trợ loại này Messaging system Application 1 Queue Application 2 31 Phạm vi Client-to-Client Phạm vi Client-to-Client Transaction bao phủ cả 2 client JMS không hỗ trợ phạm vi này Messaging system Application 1 Queue Application 2 32 1.4 Truyền thông điệp phân tán 33 Truyền thông điệp phân tán Các hệ thống truyền thông điệp phân tán (Enterprise MS) có thể cung...Mô hình kéo Kênh/Nhận – chủ động 11 Phần dẻo hướng thông điệp Receiver Sender MOM Messages 12 Các tính năng của phần dẻo hướng thông điệp Hỗ trợ 2 mô hình truyền thông điệp: Point-to-point: điểm-điểm Publish-Subscribe Độ tin cậy Các thao tác giao dịch Truyền thông điệp phân tán An ninh 13 Các đặc tính thêm Truyền thông điệp thời gian thực ... điệp phân tán Các hệ thống truyền thông điệp phân tán (Enterprise MS) có thể cung cấp hạ tầng trong đó, thông điệp được forward giữa các servers: Được gọi là “message channel” 34 Truyền thông điệp phân tán Messaging server 1 Application 1 message Queue Message channel Application 2 message Queue Messaging server 2 35 1.5 An ninh 36 ... dịch Truyền thông điệp phân tán An ninh 13 Các đặc tính thêm Truyền thông điệp thời gian thực Đảm bảo an ninh cho các giao dịch Chứng thực Cân bằng tải 14 Một số hệ thống MOM TIBCO JMS (Java Message Service) WebsphereMQ, ActiveMQ (apache) IBM MQ (Message Queues) MSMQ (Microsoft Message Queue) 15 1.1 Mô hình truyền thông điệp 16 Mô hình truyền thông điệp Point to point Một thông ... giao dịch, truyền thông điệp phân tán, an toàn Tại cần truyền thông điệp JMS Kiến trúc JMS APIs Lập trình JMS Các bước viết JMS clients (bộ gửi nhận) Các đặc tính JMS Truyền thông điệp gì? Truyền... system Application Queue Application 32 1.4 Truyền thông điệp phân tán 33 Truyền thông điệp phân tán Các hệ thống truyền thông điệp phân tán (Enterprise MS) cung cấp hạ tầng đó, thông điệp forward... 49 JMS API JavaTM Application JMS API JMS Provider JMS JMS Provider Provider IBM Progress MQSeries SonicMq Fiorano JMS JMS Provider Provider BEA SUN MQ 50 JMS J2EE Cho phép Java developers