zoukankan      html  css  js  c++  java
  • ActiveMQ持久化机制

    用户注册成功后发短信提醒

       同步http

       异步mq

    JMS中两种通讯模式:

       发布订阅   一对多  topic   去过消费者集群的话 都会消费  

       消息队列   点对点 queue  去过消费者集群的话 均摊消费  

      场景问题: 服务器断电重启,未被消费的消息是否会在重启之后消费?

     两种模式:

     1、非持久性,服务器断电(关闭)之后,使用非持久性模型时,没有被消费的消息不会继续消费,全部丢失 。程序会报一个连接关闭异常,停止运行。继续启动服务器运行程序,不会接收任何消息。

     2、持久性,服务器断电(关闭)之后,使用持久性模型时,没有被消费的消息会继续消费,程序也会报连接关闭异常,但再次启动服务器和程序后,接收方还能继续原来的消息再次接收。

    package com.toov5.producer;
    
    import javax.jms.Connection;
    import javax.jms.DeliveryMode;
    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 producerTest {
        // mq通讯地址
        private static String url = "tcp://192.168.91.6:61616";
        // 队列名称
        private static String queueName = "toov5_queue";
    
        public static void main(String[] args) throws JMSException {
            // 先创建连接工厂 密码默认采用admin admin
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
            // 创建连接
            Connection connection = activeMQConnectionFactory.createConnection();
            // 启动连接
            connection.start();
            // 创建会话
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 是否需要事务方式提交 消费方式默认自动签收
            // 拿到session 创建目标 创建队列
            Queue queue = session.createQueue(queueName);
             // 创建生产者
            MessageProducer producer = session.createProducer(queue); // 生产者生产的消息 是放在这个queue里面的
            producer.setDeliveryMode(DeliveryMode.PERSISTENT);  //默认非持久化的 设置持久化
            for (int i = 1; i < 10; i++) {
                // 拿到队列 创建消息
                TextMessage textMessage = session.createTextMessage("消息内容" + i);
                // 发送消息
                producer.send(textMessage);
            }
            // 关闭连接
            connection.close();
            System.out.println("消息发送完毕");
        }
    
    }
  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/toov5/p/9937792.html
Copyright © 2011-2022 走看看