JMS连接ActiveMQ之主题消息

主题消息(必须先订阅,才能读到生产者的消息)

在上一个项目的基础上创建主题消息

1、消费者

package com.jms.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class AppConsumer {
    private static final String url = "tcp://localhost:61616";
    //创建队列的名字
    private static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException {
        //1.创建连接工厂ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        //2.创建连接Connection
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话  第一个参数是:是否在事物中处理
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标
        Destination destination = session.createTopic(topicName);
        //6.创建一个消费者
        MessageConsumer consumer = session.createConsumer(destination);

        //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.关闭连接
        //connection.close();
    }
}

2、启动项目,订阅消息

3、生产者发布消息

package com.jms.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class AppProducer {
    private static final String url="tcp://localhost:61616";
    //创建队列的名字
    private static final String topicName="topic-test";
    public static void main(String [] args)throws JMSException{
        //1.创建连接工厂ConnectionFactory
        ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
        //2.创建连接Connection
        Connection connection=connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话  第一个参数是:是否在事物中处理
        Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标
        Destination destination=session.createTopic(topicName);
        //6.创建生产者
        MessageProducer producer=session.createProducer(destination);

        for (int i=0;i<=100;i++){
            //7.创建消息
            TextMessage textMessage=session.createTextMessage("test"+i);
            //8.发布消息
            producer.send(textMessage);

            System.out.println("发送消息"+textMessage.getText());
        }
        //9.关闭连接
       connection.close();
    }
}

4、启动项目,发布消息,可以看到消费者都能读取到消息



阅读更多
个人分类: 消息中间件
上一篇JMS连接AcitveMQ实例
下一篇springboot配置全局的异常之十二
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭