The core concept and working principle of the Java Message Services (JMS) framework
The Java message service (JMS) framework is a standard for asynchronous communication between Java applications.It provides a reliable and efficient mechanism for sending, receiving and passing messages in a distributed system.The core concepts of the JMS framework include messages, queues, themes, and connecting factories.
1. News: The message is the basic unit in the JMS framework.It is a piece of data that can be text, bytes, objects and other forms.The sender sends the message to the queue or theme, and the receiver receives the message from the queue or theme.
2. Quest: The queue is a point-to-point communication model.The sender sends the message to a specific queue, and only one receiver can receive the message.If there are multiple receivers who listen to the same queue, only one receiver can consume the news.
3. Subject: The theme is a Publish-Subscribe communication model.The sender sends the message to a specific theme, and all receivers who subscribe to the theme can receive the message.Different from the queue, the theme can realize one -to -many messages distribution.
4. Connecting the factory: Connecting the factory is the object of establishing a message server in the JMS framework.It acts as the middle layer between the connection server and the client.By connecting the factory, the application can create a connection to the message server to send and receive messages.
The working principle of the JMS framework is as follows:
1. Application to connect to the factory creation by connecting the factory.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.QueueConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsExample {
public static void main(String[] args) {
try {
// Create a connection factory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a connection
Connection connection = connectionFactory.createConnection();
// Start the connection
connection.start();
// Make message sending, receiving and other operations
// Turn off the connection
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
2. After the connection is successful, the application can create a session object.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.QueueConnectionFactory;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsExample {
public static void main(String[] args) {
try {
// Create a connection factory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a connection
Connection connection = connectionFactory.createConnection();
// Start the connection
connection.start();
// Create the meeting
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Make message sending, receiving and other operations
// Turn off the connection
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
3. Applications can create message producers and send messages.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsExample {
public static void main(String[] args) {
try {
// Create a connection factory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a connection
Connection connection = connectionFactory.createConnection();
// Start the connection
connection.start();
// Create the meeting
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create queue
Queue queue = session.createQueue("example.queue");
// Create message producers
MessageProducer producer = session.createProducer(queue);
// Create text messages
TextMessage message = session.createTextMessage("Hello, JMS!");
// Send a message
producer.send(message);
// Turn off the connection
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
4. Applications can create messages and receive messages.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsExample {
public static void main(String[] args) {
try {
// Create a connection factory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a connection
Connection connection = connectionFactory.createConnection();
// Start the connection
connection.start();
// Create the meeting
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create queue
Queue queue = session.createQueue("example.queue");
// Create message Consumers
MessageConsumer consumer = session.createConsumer(queue);
// Receive messages
TextMessage message = (TextMessage) consumer.receive();
// Treat the message
System.out.println("Received message: " + message.getText());
// Turn off the connection
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
The above is the core concept and working principle of the Java message service (JMS) framework.Through the JMS framework, the Java application can easily communicate asynchronous message communication and implement reliable message transmission.