消息中间件JMS点对点入门小Demo

消息中间件JMS点对点入门小Demo

  • 消息生产者
    创建jmsDemo工程 引入依赖
 <dependency>
        <groupId>org.apache.activemqgroupId>
        <artifactId>activemq-clientartifactId>
        <version>5.13.4version>
dependency>

创建类QueueProducer

package jms.queues.demo;

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 创建生产者
 */
public class QueueProducer {
    public static void main(String[] args) throws JMSException {
        //1.创建连接工厂
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.52.128:61616");
        //2.获取连接
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.获取session
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建队列对象
        Queue queue = session.createQueue("test-queue");
        //6.创建消息生产者
        MessageProducer producer = session.createProducer(queue);
        //7.创建消息
        TextMessage textMessage = session.createTextMessage("欢迎来到activeMQ----");
        //8.发送消息
        producer.send(textMessage);
        //9.关闭资源
        producer.close();
        session.close();
        connection.close();
    }
}
  • 上述代码中第4步创建session 的两个参数:
    第1个参数 是否使用事务
    第2个参数 消息的确认模式

    • AUTO_ACKNOWLEDGE = 1 自动确认
    • CLIENT_ACKNOWLEDGE = 2 客户端手动确认
    • DUPS_OK_ACKNOWLEDGE = 3 自动批量确认
    • SESSION_TRANSACTED = 0 事务提交并确认

    运行后通过ActiveMQ管理界面查询

    消息中间件JMS点对点入门小Demo_第1张图片

  • 消息消费者

创建类QueueConsumer

package jms.queues.demo;

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 *消费者
 */
public class QueueConsumer {

    public static void main(String[] args) throws JMSException, Exception {
        //1.创建连接工厂
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.52.128:61616");
        //2.获取连接对象
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.获取session
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        //5.创建队列对象
        Queue queue = session.createQueue("test-queue");
        //6.创建消费者
        MessageConsumer consumer = session.createConsumer(queue);
        //7.监听消息
        consumer.setMessageListener(new MessageListener() {

            public void onMessage(Message message) {
                TextMessage textMessage=(TextMessage) message;
                try {
                    System.out.println("接受消息: "+textMessage.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
        //8.等待键盘输入
        System.in.read();   
        //9.关闭资源
        consumer.close();
        session.close();
        connection.close(); 
    }
}

执行后看到控制台输出

消息中间件JMS点对点入门小Demo_第2张图片

消息中间件JMS点对点入门小Demo_第3张图片

运行测试

同时开启2个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现只有一个消费者会接收到消息。

喜欢就点赞评论+关注吧

消息中间件JMS点对点入门小Demo_第4张图片

感谢阅读,希望能帮助到大家,谢谢大家的支持!

你可能感兴趣的:(消息中间件,消息中间件,jms)