美文网首页
ActiveMQ的发布和订阅

ActiveMQ的发布和订阅

作者: HRADPX | 来源:发表于2019-07-15 14:24 被阅读0次

  ActiveMQ的安装下载见:ActiveMQ的下载安装,ActiveMQ的点对点模型也在其中讲过。

1 订阅者Subscriber

public class Subscriber1 {
    // 默认的连接用户名
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
    // 默认的连接密码
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
    // 默认的连接地址
    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL; 

    public static void main(String[] args) {

        //连接工厂
        ConnectionFactory connectionFactory;
        Connection connection = null;//连接
        Session session;//会话
        Destination destination;//消息目的地
        MessageConsumer consumer;//消息消费者

        connectionFactory = 
                new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKEURL);

        try {
            //通过工厂获取连接
            connection = connectionFactory.createConnection();
            connection.start();//启动连接
            //创建session
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //这里的名字要和ActiveMQ中的队列名子一致
            destination = session.createTopic("短信发送");
            consumer = session.createConsumer(destination);//创建消息消费者
            // 写MQ的监听器
            consumer.setMessageListener(new MyMessageListener1());
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
/**
* 消息监听器
*/
class MyMessageListener1 implements MessageListener{

    @Override
    public void onMessage(Message message) {
        TextMessage msg = (TextMessage) message;
        try {
            System.out.println("Consumer1从MQ队列中接收消息:"+msg.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

Subscriber2和Subscriber1一样,这里略去。

2 发布者

public class JMSPublisher {

    // 默认的连接用户名
    private static final String USERNAME= ActiveMQConnection.DEFAULT_USER;
    // 默认的连接密码
    private static final String PASSWORD= ActiveMQConnection.DEFAULT_PASSWORD;
    // 默认的连接地址
    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; 

    public static void main(String[] args) {

        //连接工厂
        ConnectionFactory connectionFactory;
        Connection connection = null;//连接
        Session session;//会话
        Destination destination;//消息目的地
        MessageProducer messageProducer;//消息生产者

        connectionFactory = 
                new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKEURL);

        try {
            //通过工厂获取连接
            connection = connectionFactory.createConnection();
            connection.start();//启动连接
            //创建session
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            destination = session.createTopic("短信发送");
            //创建消息生产者
            messageProducer = session.createProducer(destination);

            //向对列中发送10条消息
            for(int i = 0;i <= 9;i++){
                String message = i+"123456789";
                TextMessage msg = session.createTextMessage(message);
                messageProducer.send(destination,msg);
            }
            session.commit();

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            // 关闭连接
            if(connection!=null){
                try {
                    connection.close();
                } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

3 测试

先启动两个订阅者,然后在开启发布者,每次发布者发布消息时,两个订阅者的窗口都会收到发布者发布的消息。

相对于点对点模型,发布订阅模式下,订阅者是被动接收MQ推送的消息,而点对点模型需要消费者主动去队列中取消息。

本文完

相关文章

  • springboot activemq(一)Queue(p2p)

    springboot activemq(一)Queue(p2p)和Topic(发布订阅) 这里安装activemq...

  • ActiveMQ的发布和订阅

    ActiveMQ的安装下载见:ActiveMQ的下载安装,ActiveMQ的点对点模型也在其中讲过。 1 订阅者S...

  • 安装ActiveMQ/队列消息/发布订阅

    1.下载ActiveMQ,http://activemq.apache.org/ 2.解压后结构如下bin存放的是...

  • ActiveMQ学习(三)Topic订阅模式

    说明 基于ActiveMQ学习(二),学习ActiveMQ的另一种消息模式Topic订阅模式,同时将普通的文本消息...

  • activeMQ-04Java实现通讯(主题TOPIC)

    回顾下,activeMQ的发布/订阅模式(topic主题)特点:1)每一个消息可以有多个消费者,即一对多的关系;2...

  • Redis发布和订阅

    1、发布和订阅是什么? 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 2、相关命...

  • 委托的发布和订阅

    * 通过委托来实现事件处理的过程,通常需要以下4个步骤 * 一:定义委托类型,并在发布者类中定义一个该类型的公有...

  • MQTT的发布和订阅

    准备工作 本文测试MQTT的发布/订阅,分为客户端版和python版。 首先我们需要一个MQTT服务器,这里推荐使...

  • Redis发布订阅

    发布订阅 Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布 者和订阅者不进行直接通信,发布者...

  • 4.Redis 发布/订阅(Pub/Sub)

    Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发...

网友评论

      本文标题:ActiveMQ的发布和订阅

      本文链接:https://www.haomeiwen.com/subject/nwrnkctx.html