Jms là gì

     
Đừng nghĩ bạn được từng nào điểm. Đừng nghĩ bạn học ở ngôi trường nào. Đừng suy nghĩ bạn tốt nghiệp các loại gì. Hãy nghĩ: MÌNH CÓ GÌ trong ĐẦU.Bạn đã 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 nhà đềkhácJDBC – Java DatabaseConnectivityJPA – Java PersistenceAPINetworkingMobile DevAndroid developmentMy GardenÂm nhạcSeminarMy ProjectsSEVisual BasicWebASP.NetHost ứng dụngwebJSF – Java ServerFaceJBoss RichFacesRichFaces: Logon với RegistrationapplicationJSPServlet programmingStrutsWeb servicesC# web servicesJava website servicesTạo website services với JAX-WS 2.0 với Java SE 6PlatformXMLJXML – JSPXSLT Examples

Blog Stats

2,914,583 hits

Email Subscription

Enter your e-mail address to lớn subscribe khổng lồ this blog và receive notifications of new posts by email.

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

Join 2,199 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 sử dụng cho câu hỏi 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 những 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ừ mặt hàng được tùy chỉnh cấu hình để giữ các thông điệp này. Hình sau chỉ cho chúng ta vài trường hợp trong cơ chế media điệp PTP.

*

Như chúng ta thấy vào hình trên, một hàng gồm thể có khá nhiều người gửi thông điệp và có tương đối nhiều người nhận nhưng lại chỉ 1 fan nhận dìm một thông điệp trong hàng. Mặc dù nhiên, vào PTP model, client rất có thể chọn thông điệp mà lại nó chất nhận được viếng thăm tuy nhiên không rước giá trị(peek).

Mô hình Publish-and-Subscribe Messaging

Mô hình Pub/Sub messaging cần sử dụng cho vấn đề phát tán các thông điệp (one-to-many broadcast). Nó được tạo trên quan niệm về chủ đề các thông điệp(message topic). Từng thông điệp được đăng (publish) lên 1 chủ thể (topic) sẽ tiến hành phát tán cho tất cả các clients mà có đăng ký(subscibe) chủ thể này. Đối tượng Topic được đóng góp gói trong một tên được chỉ định vì nhà cung ứng dịch vụ. Điều này tựa như như có mang newsgroups, user đk chủ đề cơ mà mình yêu thương thích, mỗi user sẽ cảm nhận 1 bạn dạng copy của thông điệp đăng tải newsgroup mà mình đăng ký. Hình sau chỉ cho bọn họ một số trường hợp của cơ chế truyền thông media điệp Pub/Sub.


*

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

*

Các interfaces thiết yếu 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 lớn create a ConnectionYes
ConnectionAn active connection to lớn 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 lớn – Point MODEL

A. Point – lớn – Point sender:

1. Công việc tiến hành

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

2. Creates a connection & a session

3. Creates a QueueSender

4. Creates a TextMessage

5. Sends one or more messages to the queue

6. Sends a control message khổng lồ indicate the end of the message stream

7. Closes the connection in a finally block, automatically closing the session & 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();

QueueSession queueSession

=queueConnection.createQueueSession(false, Session.

Xem thêm: Cách Tải Huang You Cho Android, Tải Huang You

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 tệp tin compile.bat với nội dung

javac -d . *.java

pause

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

4. Thực thi

Tạo tệp tin run_SendQueue.bat với nội dung

java queue/QueueSend

pause

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

D:Bai giang AptechAptech – Semester 4JMSexmplesJMSp2p_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 AptechAptech – Semester 4JMSexmplesJMSp2p_ex1>pause

Press any key lớn continue . . .

B. Point – to – Point receiver

1. Quá trình tiến hành

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

2. Creates a connection and a session

3. Creates a QueueReceiver

4. Starts the connection, causing message delivery to lớn begin

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

6. Closes the connection in a finally block, automatically closing the session và 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.

Xem thêm: Khởi Nghiệp Tinh Gọn ( Lean Startup Là Gì, Lean Startup Là Gì

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

Context context = new InitialContext();

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

QueueConnection queueConnection=connectionFactory.createQueueConnection();

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