返回介绍

13.1 JMS 的独立使用

发布于 2025-04-22 22:09:18 字数 2296 浏览 0 评论 0 收藏

尽管大多数的 Java 消息服务的使用都会跟 Spring 相结合,但是,我们还是非常有必要了解消息的独立使用方法,这对于我们了解消息的实现原理以及后续的与 Spring 整合实现分析都非常重要。当然在消息服务的使用前,需要我们先开启消息服务器,如果是 Windows 系统下可以直接双击 ActiveMQ 安装目录下的 bin 目录下的 activemq.bat 文件来启动消息服务器。

消息服务的使用除了要开启消息服务器外,还需要构建消息的发送端与接收端,发送端主要用来将包含业务逻辑的消息发送至消息服务器,而消息接收端则用于将服务器中的消息提取并进行相应的处理。

(1)发送端实现

发送端主要用于发送消息到消息服务器,以下为发送消息测试,尝试发送三条消息到消息服务器,消息的内容为“大家好这是个测试”。

public class Sender {

  public static void main(String[] args) throws Exception {

   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();

   Connection connection = connectionFactory.createConnection();

  //connection.start();

   Session session = connection.createSession(Boolean.TRUE,

  Session.AUTO_ACKNOWLEDGE);

   Destination destination = session.createQueue("my-queue");

   MessageProducer producer = session.createProducer(destination);

   for (int i = 0; i < 3; i++) {

    TextMessage message = session.createTextMessage("大家好这是个测试");

   Thread.sleep(1000);

   // 通过消息生产者发出消息

   producer.send(message);

  }

  session.commit();

  session.close();

  connection.close();

 }

}

上面的函数实现很容易让我们联想到数据库的实现,在函数开始时需要一系列冗余的但又必不可少的用于连接的代码,而其中真正用于发送消息的代码其实很简单。

(2)接收端实现。

接收端主要用于连接消息服务器并接收服务器上的消息。

public class Receiver {

  public static void main(String[] args) throws Exception {

   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();

   Connection connection = connectionFactory.createConnection();

  connection.start();

   final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_

  ACKNOWLEDGE);

   Destination destination = session.createQueue("my-queue");

   MessageConsumer consumer = session.createConsumer(destination);

   int i=0;

   while(i<3) {

   i++;

    TextMessage message = (TextMessage) consumer.receive();

   session.commit();

    //TODO something....

    System.out.println("收到消息:" + message.getText());

  }

  session.close();

  connection.close();

 }

}

程序测试的顺序是首先开启发送端,然后向服务器发送消息,接着再开启接收端,不出意外,就会接收到发送端发出的消息。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。