这篇文章主要介绍了ActiveMQ持久化机制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用户注册成功后发短信提醒
http同步 mq
异步
<强> JMS中两种通讯模式:强>
发布订阅一对多主题去过消费者集群的话都会消费
消息队列点对点去排队过消费者集群的话均摊消费
场景问题:服务器断电重启,未被消费的消息是否会在重启之后消费?
<强>两种模式:强>
1,非持久性,服务器断电(关闭)之后,使用非持久性模型时,没有被消费的消息不会继续消费,全部丢失。程序会报一个连接关闭异常,停止运行。继续启动服务器运行程序,不会接收任何消息。
2,持久性,服务器断电(关闭)之后,使用持久性模型时,没有被消费的消息会继续消费,程序也会报连接关闭异常,但再次启动服务器和程序后,接收方还能继续原来的消息再次接收。
包com.toov5.producer; 进口javax.jms.Connection; 进口javax.jms.DeliveryMode; 进口javax.jms.JMSException; 进口javax.jms.MessageProducer; 进口javax.jms.Queue; 进口javax.jms.Session; 进口javax.jms.TextMessage; 进口org.apache.activemq.ActiveMQConnectionFactory; 公开课producerTest {//mq通讯地址 私有静态字符串url=皌cp://192.168.91.6:61616”;//队列名称 私有静态字符串queueName=" toov5_queue”; 公共静态void main (String [] args)抛出JMSException {//先创建连接工厂密码默认采用管理员管理 ActiveMQConnectionFactory ActiveMQConnectionFactory=new ActiveMQConnectionFactory (url);//创建连接 连接连接=activeMQConnectionFactory.createConnection ();//启动连接 connection.start ();//创建会话=连接会话对话。createSession (false, Session.AUTO_ACKNOWLEDGE);//是否需要事务方式提交消费方式默认自动签收//拿到会话创建目标创建队列 队列的队列=session.createQueue (queueName);//创建生产者 MessageProducer生产商=session.createProducer(队列);//生产者生产的消息是放在这个队列里面的 producer.setDeliveryMode (DeliveryMode.PERSISTENT);//默认非持久化的设置持久化 for (int i=1;我& lt;10;我+ +){//拿到队列创建消息 TextMessage TextMessage=会话。createTextMessage(“消息内容”+ i);//发送消息 producer.send (textMessage); }//关闭连接 connection.close (); System.out.println(“消息发送完毕”); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。