Bạn có thể viết bài mới.Bạn có thể "đặt hàng" bài viết.Mọi chi tiết xin mail về cho tác giả blog. Xin chân thành cảm ơn sự cộng tác của các bạn!

Recent Posts

Archives

ArchivesSelect Month August 2011 (1) March 2011 (1) June 2010 (1) January 2010 (1) September 2009 (1) May 2009 (1) March 2009 (1) December 2008 (3) November 2008 (1) October 2008 (1) October 2007 (1)

Subscribe

Các phản hồi gần đây

Các trang được yêu thích


Đừng nghĩ bạn được bao nhiêu điểm. Đừng nghĩ bạn học ở trường nào. Đừng nghĩ bạn tốt nghiệp loại gì. Hãy nghĩ: MÌNH CÓ GÌ TRONG ĐẦU.

Bạn đang xem: Jms là gì


Pages

C#CTDLJ2EEEJBEJB 2.x với NetBeans 6.7.1 & JBoss AS 4.23GAEJB 3Java MailJMSRMIJavaLập trình java cănbảnBài tập chương4GUI applicationLập trình java nângcaoCác chủ đềkhácJDBC – Java DatabaseConnectivityJPA – Java PersistenceAPINetworkingMobile DevAndroid developmentMy GardenÂm nhạcSeminarMy ProjectsSEVisual BasicWebASP.NetHost ứng dụngwebJSF – Java ServerFaceJBoss RichFacesRichFaces: Logon và RegistrationapplicationJSPServlet programmingStrutsWeb servicesC# Web servicesJava Web servicesTạo Web services với JAX-WS 2.0 và Java SE 6PlatformXMLJXML – JSPXSLT Examples

Blog Stats

2,912,361 hits

Email Subscription

Enter your email address to subscribe to this blog and receive notifications of new posts by email.


Join 2,200 other followers


Email Address:

Sign me up!


JMS – ví dụ làm việc với Point-To-Point Model và Publish-and-Subscribe Model

JMS

PDF version here

Giới thiệu

Mô hình Point-to-Point Messaging

Mô hình PTP messaging dùng cho việc chuyển giao các thông điệp theo kiểu 1-1, tức là mỗi thông điệp chỉ được nhận 1 lần bởi 1 client. Nó được xây dựng dựa trên khái niệm message queue(hàng các thông điệp). Mỗi thông điệp được gửi tới một hàng được chỉ định; clients nhận các thông điệp từ hàng được thiết lập để giữ các thông điệp này. Hình sau chỉ cho chúng ta vài tình huống trong cơ chế truyền thông điệp PTP.

*
Như chúng ta thấy trong hình trên, một hàng có thể có nhiều người gửi thông điệp và có nhiều người nhận nhưng chỉ 1 người nhận nhận một thông điệp trong hàng. Tuy nhiên, trong PTP model, client có thể chọn thông điệp mà nó cho phép viếng thăm nhưng không lấy giá trị(peek).

Mô hình Publish-and-Subscribe Messaging

Mô hình Pub/Sub messaging dùng cho việc phát tán các thông điệp (one-to-many broadcast). Nó được xây dựng trên khái niệm về chủ đề các thông điệp(message topic). Mỗi thông điệp được đăng (publish) lên 1 chủ đề (topic) sẽ được phát tán cho tất cả các clients mà có đăng ký(subscibe) chủ đề này. Đối tượng Topic được đóng gói trong 1 tên được chỉ định bởi nhà cung cấp dịch vụ. Điều này tương tự như khái niệm newsgroups, user đăng ký chủ đề mà mình yêu thích, mỗi user sẽ nhận được 1 bản copy của thông điệp đăng lên newsgroup mà mình đăng ký. Hình sau chỉ cho chúng ta một số tình huống của cơ chế truyền thông điệp Pub/Sub.

*

Trong mô hình Pub/Sub, một JMS client có thể là 1 durable subscriber để có thể ngắt kết nối và sau này nối lại để lấy các thông điệp mà mình đã đăng ký.

*
Các interfaces chính của JMS.

JMS Parent Interface

PTP Specific

Pub/Sub Specific

ConnectionFactoryQueueConnectionFactoryTopicConnectionFactory
ConnectionQueueConnectionTopicConnection
DestinationQueueTopic
SessionQueueSessionTopicSession
MessageProducerQueueSenderTopicPublisher
MessageConsumerQueueReceiver, QueueBrowserTopicSubscriber

Giải thích

InterfaceDescriptionConcurrent Use?
ConnectionFactoryAn administered object used by a client to create a ConnectionYes
ConnectionAn active connection to a JMS providerYes
DestinationAn administered object that encapsulates the identity of a message destinationYes
SessionA single-threaded context for sending and receiving messagesNo
MessageProducerAn object created by a Session that is used for sending messages to a destinationNo
MessageConsumerAn object created by a Session that is used for receiving messages sent to a destination

Các bước để viết 1 ứng dụng JMS:

1. Import the javax.jms package

2. Look up the ConnectionFactory using the JNDI Context

3. Create a Connection from the ConnectionFactory

4. Create a Session from the Connection object

5. Look up the Destination using the same JNDI Context

6. Create a MessageProducer or a MessageConsumer using the Session object

7. Create a Message by choosing an appropriate JMS message type

8. Send/receive the Message after starting the Connection

VÍ DỤ ỨNG DỤNG JMS Point – To – Point MODEL

A. Point – To – Point sender:

1. Các bước tiến hành

1. Performs a Java Naming and Directory InterfaceTM (JNDI) API lookup of the QueueConnectionFactory and queue

2. Creates a connection and a session

3. Creates a QueueSender

4. Creates a TextMessage

5. Sends one or more messages to the queue

6. Sends a control message to indicate the end of the message stream

7. Closes the connection in a finally block, automatically closing the session and QueueSender

2. Source code

package queue2;

import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.jms.QueueSender;

import javax.jms.QueueSession;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.naming.Context;

import javax.naming.InitialContext;

public class QueueSend {

public static void main(String<> args) {

try {

System.setProperty(“java.naming.factory.initial”,”org.jnp.interfaces.NamingContextFactory”);

System.setProperty(“java.naming.provider.url”,”127.0.0.1:1099″);

System.out.println(“Looking up the JMS destination(Topic) via JNDI.”);

Context context = new InitialContext();

QueueConnectionFactory connectionFactory = (QueueConnectionFactory)context.lookup(“ConnectionFactory”);

System.out.println(“Create Queue Connection Factory completed!”);

QueueConnection queueConnection=connectionFactory.createQueueConnection();

System.

Xem thêm: Du Lịch Trong Nước Tiếng Anh Là Gì : Định Nghĩa, Ví Dụ Anh Việt

out.println(“Create Queue Connection completed!”);

QueueSession queueSession

=queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

System.out.println(“Create Queue Session completed!”);

Queue queue=(Queue)context.lookup(“queue/testQueue”);

System.out.println(“Create Queue completed!”);

QueueSender queueSender=queueSession.createSender(queue);

System.out.println(“Create Queue Sender completed!”);

TextMessage message=queueSession.createTextMessage();

message.setText(“Hello from Queue Messaging”);

queueSender.send(message);

queueConnection.close();

System.out.println(“Send message completed…”);

} catch (Exception e) {

e.printStackTrace();

}

}

}

3. Biên dịch

Tạo file compile.bat với nội dung

javac -d . *.java

pause

Chạy file này để biên dịch, đảm bảo không có 1 lỗi nào.

4. Thực thi

Tạo file run_SendQueue.bat với nội dung

java queue/QueueSend

pause

5. Kết quả sau khi thực thi

D:\Bai giang Aptech\Aptech – Semester 4\JMS\exmples\JMS\p2p_ex1>java queue/QueueSend

Looking up the JMS destination(Topic) via JNDI.

Create Queue Connection Factory completed!

Create Queue Connection completed!

Create Queue Session completed!

Create Queue completed!

Create Queue Sender completed!

Send message completed…

D:\Bai giang Aptech\Aptech – Semester 4\JMS\exmples\JMS\p2p_ex1>pause

Press any key to continue . . .

B. Point – To – Point receiver

1. Các bước tiến hành

1. Performs a JNDI API lookup of the QueueConnectionFactory and queue

2. Creates a connection and a session

3. Creates a QueueReceiver

4. Starts the connection, causing message delivery to begin

5. Receives the messages sent to the queue until the end-of-message-stream control message is received

6. Closes the connection in a finally block, automatically closing the session and QueueReceiver

2. Source code

package queue2;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.jms.QueueReceiver;

import javax.jms.QueueSession;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.naming.Context;

import javax.naming.InitialContext;

public class QueueReceive {

public static void main(String<> args) {

try {

System.setProperty(“java.naming.factory.initial”,”org.jnp.interfaces.NamingContextFactory”);

System.setProperty(“java.naming.provider.url”,”127.0.0.1:1099″);

System.out.println(“Looking up the JMS destination via JNDI.”);

Context context = new InitialContext();

QueueConnectionFactory connectionFactory = (QueueConnectionFactory)context.lookup(“ConnectionFactory”);

QueueConnection queueConnection=connectionFactory.createQueueConnection();

QueueSession queueSession=queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Về londonrocknroll.com

londonrocknroll.com - Trang web được thành lập bởi Wordpress. Nội dung trên blog này đều đề cập đến những vấn đề mọi người quan tâm và hay tìm kiếm trên công cụ tìm kiếm "Google" hiện nay, giúp người dùng có thêm nhiều thông tin hay và bổ ích.

Lưu Ý Nội Dung

Mọi thông tin trên website đều mang tính chất tham khảo. Và chúng tôi sẽ không chịu trách nhiệm khi bạn tự ý làm theo mà chưa hỏi ý kiến của chuyên gia.


Mọi thắc mắc xin liên hệ: [email protected]

Quản lý nội dung

Nội dung trên website chủ yếu được sưu tầm từ internet giúp bạn có thêm những tài liệu bổ ích và khách quan nhất. Nếu bạn là chủ sở hữu của những nội dung và không muốn chúng tôi đăng tải, hãy liên hệ với quản trị viên để gỡ bài viết

© COPYRIGHT 2022 BY londonrocknroll.com