JMS(七):DeliveryMode

    DeliveryMode:

        消息的发送模式:PERSISTENT(持久化消息) 或NON_PERSISTENT(非持久化消息)。前者表示消息在被消费之前,如果JMS提供者DOWN了,重新启动后消息仍然存在。后者在这种情况下表示消息会被丢失。可以通过下面的方式设置:
       Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);


public class Test5_1 {

	public static void main(String[] args) throws JMSException {

		//建立与消息服务器的连接:
		ConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
		Connection connection = factory.createConnection();
		connection.start();
		
		//创建一个队列
		Queue queue = new ActiveMQQueue("testQueue");  
		
		//创建一个会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);  

		//创建一个生产者:
		MessageProducer producer = session.createProducer(queue);  
		producer.setDeliveryMode(DeliveryMode.PERSISTENT);  
	
		Message message = session.createTextMessage( " 一个持久化消息。" );
		producer.send(message);  

		producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);  
		message = session.createTextMessage( " 一个非持久化消息。" );
		producer.send(message);  
		
		System.out.println("成功将消息发送到服务器。");  
		
	}

}

运行完上述代码后,然后down掉JMS提供者,在运行下面一段代码:

public class Test5_2 {

	public static void main(String[] args) throws JMSException {

		//建立与消息服务器的连接:
		ConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
		Connection connection = factory.createConnection();
		connection.start();

		Queue queue = new ActiveMQQueue("testQueue");  
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);  

		MessageConsumer comsumer = session.createConsumer(queue);  
		comsumer.setMessageListener(new MessageListener(){  
			public void onMessage(Message message) {  
				try {  
					System.out.println("消费者得到消息性质为:  " + ((TextMessage)message).getText());  
				} catch (JMSException e) {  
					e.printStackTrace();  
				}  
			}  
		});  
	}
}


结果:

消费者得到消息性质为:   一个持久化消息。


转载于:https://my.oschina.net/gently/blog/628853

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值