Bài viết đã được sự cho phép của tác giả giang phan
Để có thể hiểu nhau trong cuộc sống thì chúng ta cần trao đổi thông tin với nhau, có thể trao đổi thông tin bằng cách nói chuyện trực tiếp, qua điện thoại, email, zalo, skype, facebook,…
Xem thêm: Jms là gì
Trong phần mềm, các thành phần chương trình hay các chương trình trong hệ thống cũng cần trao đổi thông tin với nhau để cùng hoạt động, việc trao đổi thông tin này được thực hiện thông qua các thông điệp.
Trong java, nó cung cấp một số API cho phép ứng dụng java tạo, gửi, nhận và đọc tin nhắn. Các apis này gọi jms (java message service) apis.
Tìm việc làm java mới nhất được trả tới $2000
Giới thiệu về jms
Thông báo
là gì?
Thông điệp là một mẩu thông tin. Nó có thể là văn bản, xml, json hoặc các thực thể (đối tượng java),… thông báo là dữ liệu rất hữu ích để giao tiếp giữa các hệ thống khác nhau.
Tin nhắn
là gì?
Nhắn tin là hoạt động trao đổi thông tin giữa các thành phần khác nhau trong cùng một hệ thống hoặc các hệ thống khác nhau. Nó có thể xảy ra đồng bộ hoặc không đồng bộ.
Ưu điểm của tính năng nhắn tin là nó có thể tích hợp các nền tảng khác nhau, giảm tắc nghẽn hệ thống, nâng cao khả năng mở rộng và cải thiện độ tin cậy của tính năng nhắn tin.
Có 2 mô hình nhắn tin: p2p (ngang hàng) và pub/sub (nhà xuất bản/người đăng ký).
jms là gì?
Api dịch vụ tin nhắn java (jms), một phần của đặc tả phiên bản java enterprice (java ee), là một api trung gian dựa trên thông báo java (mom) để gửi tin nhắn giữa hai hoặc nhiều máy khách.
p>
jms mô tả phương thức khởi tạo chương trình java, dùng để: tạo (create), gửi (send), nhận (receive), đọc (read) tin nhắn.
jms hỗ trợ giao tiếp có khả năng kết nối lỏng lẻo, đáng tin cậy và không đồng bộ giữa các thành phần khác nhau của ứng dụng phân tán.
Giao tiếp giữa các client được tạo bởi message broker thông qua các chuẩn giao tiếp không đồng bộ (ví dụ: amqp, mqtt).
Đang xem: Sinh năm 1995 năm nay bao nhiêu tuổi
Api jms là một triển khai giải quyết vấn đề giữa nhà sản xuất và người tiêu dùng.
jms gồm 2 thành phần:
- api: Hỗ trợ chức năng cho các nhà phát triển phần mềm.
- spi (giao diện nhà cung cấp dịch vụ): Cho phép nhà cung cấp tạo các công cụ jms tích hợp cho mọi người sử dụng theo hướng chuẩn hóa.
- Kết nối mở ra một kênh giao tiếp giữa khách hàng và nhà môi giới.
- Tiếp theo, khách hàng phải thiết lập phiên để tạo, tạo và đọc thư. Bạn có thể coi phiên là một luồng tin nhắn được xác định cho một cuộc trò chuyện cụ thể giữa khách hàng và nhà môi giới. Bản thân khách hàng là nhà sản xuất hoặc người tiêu dùng.
- Các giao dịch do khách hàng tạo là giao dịch giữa nhà sản xuất và nhà môi giới hoặc giữa nhà môi giới và người tiêu dùng, không phải giữa nhà sản xuất và người tiêu dùng.
- Các nhà sản xuất gửi tin nhắn đến các điểm đến do nhà môi giới quản lý. Người tiêu dùng truy cập điểm đến này để nhận tin nhắn.
- Một thông báo bao gồm tiêu đề, thuộc tính tùy chọn và nội dung. Phần thân chứa dữ liệu, các tiêu đề chứa thông tin mà broker cần để định tuyến và quản lý thông báo, đồng thời các thuộc tính có thể được xác định bởi ứng dụng khách hoặc nhà cung cấp để phù hợp với nhu cầu xử lý thông báo của họ.
- Kết nối, phiên, đối tượng, thông báo, nhà sản xuất và người tiêu dùng là những đối tượng cơ bản tạo nên ứng dụng jms.
- nhà cung cấp jms :
- jms api là một tập hợp các giao diện và không chứa bất kỳ triển khai nào. Nhà cung cấp jms là hệ thống của bên thứ ba triển khai api jms để cung cấp khả năng nhắn tin cho khách hàng.
- Nhà cung cấp jms còn được gọi là phần mềm mẹ. Nhà cung cấp jms cũng cung cấp một số thành phần ui để quản lý và điều khiển phần mềm mẹ này.
- Nhà cung cấp jms được viết bằng java tiêu chuẩn nên có thể chạy đa nền tảng.
- ứng dụng khách jms: là một thành phần ứng dụng hoặc chương trình độc lập, được viết bằng java, có khả năng trao đổi thông điệp.
- jms producer/publisher: là ứng dụng khách jms tạo và gửi tin nhắn.
- jms Consumer/ Subscriber : Đây là ứng dụng khách jms nhận tin nhắn.
- Thông báo jms: là các đối tượng chứa định dạng trung gian của dữ liệu được giao tiếp giữa ứng dụng khách jms và nhà cung cấp.
- đối tượng được quản lý : Nó hỗ trợ cơ chế quản lý và cấu hình của các đối tượng jms. bao gồm:
- đối tượng connectionfactory: được sử dụng để thiết lập kết nối giữa ứng dụng java và nhà cung cấp jms. Khái niệm truy cập nguồn dữ liệu tương tự như kết nối dữ liệu.
- đối tượng đích: Nó là nơi lưu trữ tin nhắn và nó là đối tượng jms được ứng dụng khách jms sử dụng, được sử dụng để chỉ định đích gửi tin nhắn và nguồn nhận tin nhắn. Có hai loại điểm đến: hàng đợi và chủ đề.
- jms queue: một khu vực mà các tin nhắn đã được gửi và đang chờ được đọc (chỉ một người tiêu dùng). Hàng đợi này đảm bảo rằng các tin nhắn được nhận theo thứ tự chúng được gửi và mỗi tin nhắn được xử lý chính xác một lần.
- Chủ đề jms: cơ chế phân phối để nhà xuất bản gửi tin nhắn đến nhiều người đăng ký.
- Không đồng bộ: Khi có tin nhắn đến, jms sẽ tự động gửi tin nhắn đến người nhận.
- Đáng tin cậy: Tin nhắn chỉ có thể được gửi tới một người nhận, không có bất kỳ cơ chế sao chép nào, vì vậy phản hồi của người nhận để hoàn tất việc nhận tin nhắn sẽ khiến thông tin trên đối tượng phần mềm trung gian bị xóa.
- Có ba thành phần chính: người gửi, hàng đợi và người nhận.
- Sử dụng hàng đợi làm nơi lưu trữ. Hàng đợi giữ các tin nhắn cho đến khi máy khách nhận được chúng hoặc thời gian chờ được đặt.
- Xác định gửi và nhận hai đối tượng, người gửi và người nhận, và chỉ có một người gửi và một người nhận.
- Mô hình này gửi tin nhắn (fifo) theo tuần tự.
- Mô hình cho phép người nhận không cần kích hoạt khi gửi tin nhắn.
- Sử dụng tín hiệu xác nhận để kích hoạt người nhận hoàn tất việc nhận tin nhắn.
- Có mô hình bảo mật cao gồm một người gửi và một người nhận, nhưng đôi khi hệ thống chặn chờ thư đến.
- Cũng có ba thành phần chính: người gửi, chủ thể và người nhận.
- Sử dụng chủ đề làm mô hình được lưu trữ. chủ đề thực sự là một loại hàng đợi, nhưng có nhiều hàng đợi với các mức độ ưu tiên khác nhau.
- Mô hình cho phép 1 người gửi và nhiều người nhận, vì vậy các đối tượng được xác định là nhà xuất bản và người đăng ký.
- Chủ đề sẽ lưu tất cả tin nhắn mà không làm mất chúng cho đến khi mẹ được đặt lại hoặc xóa.
- Mỗi người đăng ký sẽ chỉ nhận được tin nhắn từ chủ đề này sau khi đăng ký.
- Không cần sử dụng thông tin xác nhận và tin nhắn được gửi đến người đăng ký chỉ là một bản sao.
- Do số lượng người nhận lớn nên tính bảo mật của mô hình không cao nhưng có ưu điểm là dễ áp dụng cho hệ thống phân tán.
- Mô hình pub/sub yêu cầu người nhận hoặc người nghe phải hoạt động trong khi gửi và nhận tin nhắn, nếu không tin nhắn sẽ không ổn định. Do đó, để giữ cho tin nhắn không bị mất nhưng được lưu trữ tạm thời trong mẹ và cho phép người dùng thực sự truy cập vào mẹ, cần phải bật tính năng kiên trì.
- Đồng bộ hóa: Một đối tượng nhận và gửi tin nhắn thông qua việc triển khai phương thức nhận, giúp ứng dụng chờ đợi cho đến khi tin nhắn đến.
- Không đồng bộ: Đối tượng nhận cần đăng ký trình nghe messagelistener để nhận tin nhắn và phương thức kích hoạt là onmessage để nhận và xử lý tin nhắn.
- độ tin cậy (reliability): Phần mềm trung gian thông điệp đảm bảo rằng thông điệp được gửi tới người nhận (receiver). Nếu người nhận gặp sự cố vì lý do nào đó, hệ thống nhắn tin sẽ lưu trữ tin nhắn cho đến khi nó trực tuyến trở lại. Đảm bảo tin nhắn chỉ được gửi một lần để tránh tin nhắn bị mất hoặc trùng lặp.
- không đồng bộ (không đồng bộ): nhà cung cấp jms, máy khách có thể gửi và nhận tin nhắn không đồng bộ. Điều này có nghĩa là người gửi và người nhận không cần đợi nhau.
- dễ tích hợp: Nhiều ứng dụng có thể được viết bằng các ngôn ngữ lập trình khác nhau hoặc chạy trên các máy chủ khác nhau. Phần mềm trung gian nhắn tin có thể được sử dụng để thiết lập liên lạc giữa chúng miễn là chúng sử dụng cùng một giao thức.
- khả năng mở rộng: Một hệ thống nhắn tin truyền tin nhắn đến nhiều người nhận, giúp hệ thống có thể mở rộng.
- tính linh hoạt: Khả năng gán các giao thức khác nhau cho các thông báo khác nhau giúp bạn linh hoạt trong việc thiết kế kiến trúc của mình.
- Kết hợp lỏng lẻo:
- jms api là một đặc điểm kỹ thuật mà tất cả các nhà cung cấp jms nên triển khai. Vì vậy, chúng tôi có thể thay đổi nhà cung cấp hiện tại thành nhà cung cấp mới mà không có hoặc ít thay đổi (chỉ có nghĩa là cấu hình) đối với mã ứng dụng jms.
- Tách biệt người gửi và người nhận, người trung gian sẽ giữ tin nhắn cho đến khi người nhận có thể xử lý nó.
- Khả năng tương tác: API jms hỗ trợ khả năng tương tác giữa các ngôn ngữ nền tảng java khác như scala và groovy.
- Cân bằng tải/chịu lỗi
- Thông báo Lỗi/Đề xuất
- Quản lý
- Bảo mật
- Giao thức có dây
- Kho lưu trữ loại tin nhắn
- Người gửi và người nhận không cần biết nhau.
- Dễ dàng đăng ký và hủy đăng ký
- Có thể được sử dụng để lưu trữ thông tin ngoại tuyến và cập nhật hàng loạt. Bằng cách này, người nhận có thể xử lý từng cái một.
- Người gửi/người nhận có thể hoạt động không đồng bộ.
- Ổ cắm cung cấp các kết nối trực tiếp.
- Độ trễ thấp do không có máy chủ ở giữa (không có mẹ)
- socket hoạt động ở lớp tcp để giảm truyền dữ liệu.
- Yêu cầu các thành phần không phụ thuộc vào thông tin giao diện của các thành phần khác, để tạo điều kiện thuận lợi cho việc thay thế các thành phần.
- Muốn ứng dụng chạy cho dù tất cả các thành phần có đang hoạt động hay không.
- Ứng dụng cho phép một thành phần gửi thông báo đến thành phần khác và tiếp tục hoạt động mà không cần đợi phản hồi ngay lập tức.
- amqp là một giao thức nhắn tin và không triển khai jms api.
- jms là một api và amqp là một giao thức. Nên nói giao thức mặc định của jms là gì cũng vô nghĩa, tất nhiên client sử dụng http/https làm giao thức kết nối khi gọi web service.
- jms chỉ là một đặc tả api. Nó không sử dụng bất kỳ giao thức nào. Nhà cung cấp jms như activemq có thể sử dụng bất kỳ giao thức cơ bản nào cho api jms để vận chuyển jms, chẳng hạn như: amqp, mqtt, openwire, rest (http), rss và atom, stomp, …
- https://docs.oracle.com/javaee/7/tutorial/jms-concepts.htm
- https://docs.oracle.com/cd/e19879-01/821-0028/6nl41ccpj/index.html
Những điều bất lợi
jms sẽ không bao gồm các tính năng sau vì jms chỉ là một hệ thống nhắn tin:
Do một số hạn chế của jms, hầu hết các hệ thống phân tán sẽ không sử dụng jms mà sẽ sử dụng các thư viện dựa trên jms, chẳng hạn như kafka, zookeeper… Có thể tham khảo thêm. Tuy nhiên, hiểu những điều cơ bản về jms sẽ giúp chúng ta thành thạo các bên thứ ba nhanh hơn.
jms và ổ cắm
Ưu điểm của jms:
Ưu điểm của ổ cắm:
trường hợp sử dụng jms?
Jms có thể được sử dụng trong một số trường hợp:
amqp là gì?
amqp (Giao thức xếp hàng tin nhắn nâng cao) là một giao thức Internet mở và được tiêu chuẩn hóa dành cho phần mềm trung gian (mẹ) điều khiển tin nhắn giữa các ứng dụng hoặc tổ chức. Các đặc điểm xác định của amqp là định hướng tin nhắn, xếp hàng, định tuyến (bao gồm p2p và nhà xuất bản/người đăng ký), độ tin cậy và bảo mật.
amqp giúp các nhà phát triển xây dựng một hệ sinh thái nhắn tin thống nhất và đa dạng, kết nối các hệ thống một cách tương tác và cộng tác.
amqp thường được so sánh với jms (dịch vụ tin nhắn java), hệ thống nhắn tin phổ biến nhất trong cộng đồng java. Một hạn chế của jms là api được chỉ định, nhưng định dạng thông báo thì không. amqp là một giao thức mô tả định dạng dữ liệu được gửi qua mạng dưới dạng một luồng byte dữ liệu được truyền được chỉ định. Tính năng này cho phép các thư viện được viết bằng nhiều ngôn ngữ và chạy trên nhiều hệ điều hành và kiến trúc cpu, tạo ra một tiêu chuẩn nhắn tin đa nền tảng thực sự có thể tương tác.
Một số điều quan trọng cần nhớ:
Trong bài viết này, chúng ta đã tìm hiểu các khái niệm quan trọng về jms. Trong các bài tiếp theo chúng ta sẽ xem cách cài đặt và sử dụng jms với một số nhà cung cấp jms như active mq, thỏ mq, ….
Tài liệu tham khảo:
Đang xem: MANGA/FILM
cơ chế giao tiếp jms
Các cơ chế liên lạc do jms cung cấp bao gồm:
mô hình jms
jms hỗ trợ hai mô hình trao đổi dữ liệu, p2p (ngang hàng) và pub/sub (nhà xuất bản/người đăng ký). Các mẫu trao đổi này được gọi là miền tin nhắn jms.
p2p (ngang hàng)
pub/sub (nhà xuất bản/người đăng ký)
Tham khảo: Các kỹ thuật dạy học tích cực hiệu quả
Cơ chế gửi và nhận tin nhắn trong jms được chia thành hai phần:
Ưu điểm của jms
Khi chúng tôi phát triển hệ thống thông báo java bằng jms api, chúng tôi có thể triển khai ứng dụng tương tự trong bất kỳ phần mềm nhà cung cấp jms nào.
Mẹ là gì?
mom (phần mềm trung gian định hướng tin nhắn hoặc mq – hàng đợi tin nhắn) là một ứng dụng trung gian hỗ trợ gửi và nhận tin nhắn trong các ứng dụng phân tán.
Cơ chế mẹ tương tự cơ sở dữ liệu nhận và gửi thông điệp, đảm bảo tính toàn vẹn dữ liệu, giao dịch và cân bằng dữ liệu gửi và nhận.
Nơi lưu trữ dữ liệu và nơi mẹ tương tác được gọi là đích.
Một số bà mẹ tiêu biểu:
nhà môi giới jms
Để gửi hoặc nhận tin nhắn, ứng dụng khách jms trước tiên phải kết nối với máy chủ tin nhắn jms (còn được gọi là proxy jms):