Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java jms

作者:你没有爱过我   发布日期:2026-03-02   浏览:34

// 导入必要的JMS库
import javax.jms.*;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class JMSExample {

    // 发送消息的示例方法
    public static void sendMessage(String queueName, String message) {
        Connection connection = null;
        Session session = null;
        try {
            // 获取初始上下文
            InitialContext initialContext = new InitialContext();

            // 查找连接工厂和队列
            QueueConnectionFactory factory = (QueueConnectionFactory) initialContext.lookup("QueueConnectionFactory");
            Queue queue = (Queue) initialContext.lookup(queueName);

            // 创建连接和会话
            connection = factory.createQueueConnection();
            session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

            // 创建消息生产者和消息
            MessageProducer producer = session.createProducer(queue);
            TextMessage textMessage = session.createTextMessage(message);

            // 发送消息
            producer.send(textMessage);
            System.out.println("Sent message: " + message);

        } catch (NamingException | JMSException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (session != null) session.close();
                if (connection != null) connection.close();
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

    // 接收消息的示例方法
    public static void receiveMessage(String queueName) {
        Connection connection = null;
        Session session = null;
        try {
            // 获取初始上下文
            InitialContext initialContext = new InitialContext();

            // 查找连接工厂和队列
            QueueConnectionFactory factory = (QueueConnectionFactory) initialContext.lookup("QueueConnectionFactory");
            Queue queue = (Queue) initialContext.lookup(queueName);

            // 创建连接和会话
            connection = factory.createQueueConnection();
            session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

            // 创建消息消费者并接收消息
            MessageConsumer consumer = session.createConsumer(queue);
            connection.start(); // 启动连接以接收消息

            // 接收消息并打印
            TextMessage receivedMessage = (TextMessage) consumer.receive(1000); // 等待1秒
            if (receivedMessage != null) {
                System.out.println("Received message: " + receivedMessage.getText());
            } else {
                System.out.println("No message received.");
            }

        } catch (NamingException | JMSException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (session != null) session.close();
                if (connection != null) connection.close();
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        // 示例:发送和接收消息
        sendMessage("queue/test", "Hello, JMS!");
        receiveMessage("queue/test");
    }
}

解释说明:

  1. 导入库:代码中导入了JMS和JNDI(Java Naming and Directory Interface)相关的库。
  2. InitialContext:用于查找JNDI命名服务中的资源,例如连接工厂和队列。
  3. 创建连接和会话:通过QueueConnectionFactory创建连接,并通过createQueueSession创建会话。会话负责创建消息生产者和消费者。
  4. 发送消息:使用MessageProducer将消息发送到指定的队列。
  5. 接收消息:使用MessageConsumer从队列中接收消息,并通过receive方法获取消息内容。
  6. 关闭资源:在finally块中确保所有资源(如连接和会话)都被正确关闭,以避免资源泄漏。

这段代码展示了如何使用JMS(Java Message Service)来发送和接收消息。

上一篇:java八种基本类型

下一篇:java单元测试工具

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

java读取excel中的图片

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站