文档章节

JMS(七):DeliveryMode

berg-dm
 berg-dm
发布于 2016/03/02 21:51
字数 309
阅读 36
收藏 0

    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();  
				}  
			}  
		});  
	}
}


结果:

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


© 著作权归作者所有

berg-dm
粉丝 26
博文 98
码字总数 88970
作品 0
深圳
程序员
私信 提问
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
398
1
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
136
0
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
124
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
155
0

没有更多内容

加载失败,请刷新页面

加载更多

正则表达式匹配

请实现一个函数用来匹配包括 '.' 和 '*' 的正则表达式。模式中的字符 '.' 表示任意一个字符,而 '*' 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配...

Garphy
今天
7
0
Laravel 5.1的多路由文件的配置

默认的路由配置文件只有一个, \app\Http\routes.php。 在同一个文件中写路由容易起冲突,文件会越来越大,就需要定义多个路由文件。 找到加载\app\Http\routes.php的文件, 打开\app\Provid...

mdoo
今天
5
0
Hibernate 5 开始使用指南前言

同时在面向对象软件和关系型数据库进行工作,可能会非常复杂和费时。数据在对象和数据库之间可能会不一致,然后导致开发成本会非常高。 Hibernate 是一个针对 Java 环境的对象关系映射(Obj...

honeymoose
今天
6
0
聊聊nacos ServiceManager的UpdatedServiceProcessor

序 本文主要研究一下nacos ServiceManager的UpdatedServiceProcessor ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Compone......

go4it
今天
7
0
正则表达式的使用(QQ格式的判断与空格的切割)

//正则表达式的使用 public static void main(String[] args) throws IOException, ClassNotFoundException { //test1("123456"); test2("-1 99 kk"); } /** * ......

zhengzhixiang
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部