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 ExamplesBlog Stats
2,914,583 hitsEmail 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 |
ConnectionFactory | QueueConnectionFactory | TopicConnectionFactory |
Connection | QueueConnection | TopicConnection |
Destination | Queue | Topic |
Session | QueueSession | TopicSession |
MessageProducer | QueueSender | TopicPublisher |
MessageConsumer | QueueReceiver, QueueBrowser | TopicSubscriber |
Giải thích
Interface | Description | Concurrent Use? |
ConnectionFactory | An administered object used by a client to lớn create a Connection | Yes |
Connection | An active connection to lớn a JMS provider | Yes |
Destination | An administered object that encapsulates the identity of a message destination | Yes |
Session | A single-threaded context for sending and receiving messages | No |
MessageProducer | An object created by a Session that is used for sending messages to a destination | No |
MessageConsumer | An 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 |
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. 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(); |
Tạo tệp tin compile.bat với nội dung
javac -d . *.java pause |
4. Thực thi
Tạo tệp tin run_SendQueue.bat với nội dung
java queue/QueueSend pause |
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 . . . |
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 |
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);