Ad
Thủ Thuật Công Nghệ

JMS là gì? Đánh giá ưu và nhược điểm của JMS

Pinterest LinkedIn Tumblr

Trong phần mềm, việc trao đổi thông tin giữa các component hay chương trình cần sự đồng bộ để hoạt động hiệu quả. Java cung cấp JMS API để tạo, gửi, nhận và đọc các message. Vậy JMS là gì? Cơ chế giao tiếp chính trong JMS như thế nào? Hãy theo dõi ngay bài viết sau đây của WIKI.LANIT  nhé!

Giới thiệu chung về JMS là gì?

Message & Messaging

Message là một phần quan trọng trong giao tiếp thông tin giữa các hệ thống, có thể có định dạng văn bản, XML, JSON hoặc entity trong Java. Tính linh hoạt của Message giúp kết nối các hệ thống khác nhau một cách hiệu quả. Mô hình nhắn tin đóng vai trò trao đổi thông tin giữa các thành phần trong hệ thống, có thể diễn ra đồng bộ hoặc không đồng bộ, mang lại sự linh hoạt và tăng cường khả năng mở rộng và tin cậy trong việc truyền tải thông tin.

Hai mô hình phổ biến trong hệ thống nhắn tin là P2P (Point to Point) và Pub/Sub (Publisher/Subscriber).

Giới thiệu chung về JMS là gì?
Giới thiệu chung về JMS là gì?

JMS là gì?

JMS là viết tắt của “Java Message Service”, đây là một API (Application Programming Interface) trong ngôn ngữ lập trình Java. API này được sử dụng để tạo, gửi, nhận và quản lý các tin nhắn trong môi trường ứng dụng phân tán. JMS cho phép các ứng dụng Java gửi và nhận tin nhắn một cách đáng tin cậy và không đồng bộ giữa các thành phần khác nhau trong một hệ thống phân tán. Nó cung cấp các giao diện và công cụ mạnh mẽ để hỗ trợ truyền thông tin giữa các ứng dụng và thiết bị thông qua các message broker, thường dựa trên các tiêu chuẩn truyền tin như AMQP (Advanced Message Queuing Protocol) hoặc MQTT (Message Queuing Telemetry Transport).

Những thành phần trong JMS là gì?

Các thành phần chính của JMS bao gồm:

  • JMS Provider: Đây là hệ thống bên thứ ba chịu trách nhiệm triển khai JMS API để cung cấp các chức năng gửi và nhận tin nhắn cho khách hàng. Nó cũng có thể được gọi là phần mềm MOM (Message Oriented Middleware) và cung cấp giao diện người dùng để quản lý và kiểm soát hệ thống MOM.
  • JMS Client : Bao gồm các chương trình độc lập hoặc thành phần của ứng dụng được viết bằng Java, có khả năng giao tiếp với các tin nhắn. Khách hàng JMS bao gồm cả JMS producer/publisher và MS consumer/subscriber
  • JMS Message: Là đối tượng dữ liệu trung gian được sử dụng để truyền thông giữa khách hàng JMS và nhà cung cấp JMS. Nó chứa dữ liệu và thông tin cần thiết để xác định cách xử lý tin nhắn.
  • Administered Objects : Bao gồm ConnectionFactory Object và Destination Object. ConnectionFactory Object được sử dụng để tạo kết nối giữa ứng dụng Java và nhà cung cấp JMS.Destination Object là nơi lưu trữ tin nhắn và xác định đích hoặc nguồn tin nhắn trong hệ thống JMS. Destination Object bao gồm JMS Queue và JMS Topic.

Các mô hình chính trong JMS là gì?

JMS bao gồm hai mô hình trao đổi dữ liệu chính là P2P (Point to Point) và Pub/Sub (Publisher/Subscriber) sau đây:

P2P (Point to Point)

Mô hình P2P
Mô hình P2P
  • Trong mô hình này, có ba thành phần chính gồm ứng dụng gửi (sender), Queue và ứng dụng nhận (receiver) tin.
  • Queue được sử dụng làm nơi lưu trữ tin nhắn và giữ lại các tin nhắn cho đến khi client nhận hoặc đến thời gian timeout được thiết lập.
  • Mô hình P2P cho phép chỉ có một người gửi và một người nhận tin nhắn, và tin nhắn được chuyển đi tuần tự (FIFO).
  • Người nhận không cần phải active tại thời điểm gửi tin nhắn và sử dụng tín hiệu acknowledge để xác nhận việc nhận tin nhắn.
  • Mô hình này đảm bảo tính bảo mật cao, nhưng đôi khi có thể gây block do chờ tin nhắn đến.

Pub/Sub (Publisher/Subscriber)

Mô hình Pub/Sub
Mô hình Pub/Sub
  • Mô hình này cũng có ba thành phần chính gồm phía gửi (sender), Topic và phía nhận (receiver).
  • Trong đó, Topic được sử dụng làm nơi lưu trữ tin nhắn, và mỗi Subscriber chỉ nhận được tin nhắn sau khi đã subscribe.
  • Mô hình này cho phép một người gửi và nhiều người nhận, đồng thời không yêu cầu sử dụng thông tin acknowledge. Mỗi Subscriber chỉ nhận được bản sao của tin nhắn.
  • Mô hình Pub/Sub không yêu cầu người nhận phải active hoặc lắng nghe tại thời điểm nhận tin nhắn, và để đảm bảo tin nhắn không mất đi, cần kích hoạt chức năng durable.

Cơ chế giao tiếp chính trong JMS là gì?

Cơ chế gửi nhận tin nhắn trong JMS có thể được chia thành phần chính sau đây:

  • Synchronous (Đồng bộ): Đối tượng nhận và gửi tin nhắn thực hiện thông qua phương thức receive, trong đó ứng dụng sẽ chờ đợi cho đến khi tin nhắn được gửi tới.
  • Asynchronous (Bất đồng bộ): Đối tượng nhận phải đăng ký một MessageListener để lắng nghe tin nhắn, và phương thức onMessage được kích hoạt để đón nhận và xử lý tin nhắn.

Đánh giá ưu và nhược điểm JMS

Ưu điểm của JMS

  • Tin nhắn được gửi và nhận một cách đáng tin cậy, có khả năng lưu trữ khi người nhận tạm ngừng hoạt động.
  • Gửi và nhận tin nhắn không đồng bộ, tăng linh hoạt và hiệu suất hệ thống.
  • Dễ dàng tích hợp và giao tiếp giữa các ứng dụng khác nhau trên nhiều nền tảng và ngôn ngữ.
  • Hỗ trợ quảng bá tin nhắn đến nhiều người nhận, mở rộng hệ thống linh hoạt.
  • Gán giao thức khác nhau cho các loại tin nhắn khác nhau, tạo điều kiện linh hoạt trong thiết kế kiến trúc.
  • Triển khai JMS thông qua đặc tả kỹ thuật giúp thay đổi nhà cung cấp mà không ảnh hưởng đến mã ứng dụng JMS.
  • API của JMS tương tác giữa các ngôn ngữ và nền tảng khác nhau, thúc đẩy tính linh hoạt trong phát triển hệ thống.

Nhược điểm của JMS

  • JMS không bao gồm một số tính năng quan trọng như Load Balancing/Fault Tolerance, Error/Advisory Notification, Administration, Security, Wire Protocol, Message Type Repository…
  • Mặc dù JMS có khả năng mở rộng, nhưng mô hình gửi nhận truyền thống có thể gây block hệ thống khi có quá nhiều tin nhắn đang chờ xử lý.

Những trường hợp sử dụng JMS

JMS có thể được sử dụng trong một số trường hợp cụ thể sau:

  • JMS thích hợp cho việc truyền tải tin nhắn đáng tin cậy giữa các ứng dụng đang hoạt động trên nhiều máy chủ khác nhau.
  •  Khi cần tích hợp các ứng dụng hoặc dịch vụ khác nhau mà không cần phụ thuộc vào chi tiết của giao diện, JMS cung cấp một lớp trung gian chung để truyền tải tin nhắn giữa các ứng dụng.
  • Trong việc xây dựng hệ thống chịu tải lớn và cần quảng bá tin nhắn đến nhiều người nhận, JMS cung cấp khả năng mở rộng hiệu quả.
  •  JMS phù hợp cho các ứng dụng đòi hỏi độ tin cậy cao, đảm bảo rằng tin nhắn sẽ được chuyển đến và nhận một cách đáng tin cậy mà không bị mất mát.
  •  Trong trường hợp cần ứng dụng gửi thông tin mà không cần chờ đợi phản hồi ngay lập tức từ người nhận, JMS cung cấp tính năng bất đồng bộ giúp hệ thống tiếp tục hoạt động mà không phụ thuộc vào phản hồi ngay lập tức.

Lời kết

Trong bài viết trên đây ,  bạn đã cùng chúng tôi tìm hiểu về  khái niệm quan trọng của JMS là gì. Nếu đang thắc mắc và muốn giải đáp về những vấn đề xoanh quanh JMS thì đừng ngần ngại để bình luận bên dưới nhé!

Mình là Tú Anh - Hiện mình đang đảm nhận một số mảng trong chiến dịch Marketing tại LANIT. Mình đã có kinh nghiệm nhiều năm trong mảng kinh doanh online, nên rất hy vọng với những kiến thức mình chia sẻ về lĩnh vực này sẽ thật sự hữu ích đối với các bạn.

Comments are closed.