AMQ学习笔记 - 18. 持久化的测试
概述
测试实例
| 测试实例 | 结果预测 | 
| 持久化递送 | 重启ActiveMQ后,消息还在队列中 | 
| 非持久化递送 | 重启ActiveMQ后,消息不在队列中 | 
demo设计
jms-producer
|---- src/main/java/
|---- cn.sinobest.asj.producer.jms.deliverymode
|---- ProducerTest.java
|---- sendPersistent():void # 测试持久化递送
|---- sendNoPersistent():void # 测试非持久化递送
测试结果和步骤
1.持久化递送
| 测试步骤 | 
  | 
| 测试结果 | 
| 符合预期。 | 
2.非持久化递送
| 测试步骤 | 
  | 
| 测试结果 | 
| 符合预期。 | 
代码
ProducerTest.java
package cn.sinobest.asj.producer.jms.deliverymode;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.junit.Test;
/**
* 基于不同的Delivery Mode的测试类.
* @author lijinlong
*
*/
public class ProducerTest {
/** JNDI name for ConnectionFactory */
static final String CONNECTION_FACTORY_JNDI_NAME = "ConnectionFactory";
/** JNDI name for Queue Destination (use for PTP Mode) */
static final String QUEUE_JNDI_NAME = "exampleQueue"; /** deliveryMode */
int deliveryMode = DeliveryMode.NON_PERSISTENT; /**
* 测试持久模式的消息发送.
*/
@Test
public void sendPersistent() {
setDeliveryMode(DeliveryMode.PERSISTENT);
send(QUEUE_JNDI_NAME);
} /**
* 测试非持久模式的消息发送.
*/
@Test
public void sendNoPersistent() {
setDeliveryMode(DeliveryMode.NON_PERSISTENT);
send(QUEUE_JNDI_NAME);
} public int getDeliveryMode() {
return deliveryMode;
}
private void setDeliveryMode(int deliveryMode) {
this.deliveryMode = deliveryMode;
}
/**
* 发送到指定的目的地.
*
* @param destJndiName
* 目的地的JNDI name.
*/
private void send(String destJndiName) {
Context jndiContext = null;
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
// create a JNDI API IntialContext object
try {
jndiContext = new InitialContext();
} catch (NamingException e) {
System.out.println("Could not create JNDI Context:"
+ e.getMessage());
System.exit(1);
}
// look up ConnectionFactory and Destination
try {
connectionFactory = (ConnectionFactory) jndiContext
.lookup(CONNECTION_FACTORY_JNDI_NAME);
destination = (Destination) jndiContext.lookup(destJndiName);
} catch (NamingException e) {
System.out.println("JNDI look up failed:" + e.getMessage());
System.exit(1);
}
// send Messages and finally release the resources.
try {
connection = connectionFactory.createConnection();
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
producer = session.createProducer(destination);
producer.setDeliveryMode(getDeliveryMode()); TextMessage message = session.createTextMessage();
for (int i = 0; i < 3; i++) {
message.setText(String.format("This is the %dth message.",
i + 1));
producer.send(message);
} } catch (JMSException e) {
e.printStackTrace();
} finally {
try {
if (session != null)
session.close();
if (connection != null)
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
ProducerTest.java
AMQ学习笔记 - 18. 持久化的测试的更多相关文章
- AMQ学习笔记 - 17. 事务的测试
		
概述 对事务机制进行测试. 测试实例 测试实例 结果预测 发送正常 3条消息入队 发送异常 0条消息入队 接收正常 3条消息出队 接收异常 0条消息出队 demo设计 设计图 测试分工 测试类 测试方 ...
 - Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
		
Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...
 - SQL反模式学习笔记18  减少SQL查询数据,避免使用一条SQL语句解决复杂问题
		
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
 - golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
		
golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...
 - springmvc学习笔记(18)-json数据交互
		
springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...
 - cocos2d-x学习笔记(18)--游戏打包(windows平台)
		
cocos2d-x学习笔记(18)--游戏打包(windows平台) 之前做好的游戏,都是在vs2008下编译执行的.假设说想把游戏公布到网上或者和其它人一起分享游戏,那就得对游戏 ...
 - tensorflow学习笔记——模型持久化的原理,将CKPT转为pb文件,使用pb模型预测
		
由题目就可以看出,本节内容分为三部分,第一部分就是如何将训练好的模型持久化,并学习模型持久化的原理,第二部分就是如何将CKPT转化为pb文件,第三部分就是如何使用pb模型进行预测. 一,模型持久化 为 ...
 - AMQ学习笔记 - 06. 可靠消息传送
		
概述 本文介绍JMS中可能发生消息故障的3个隐患阶段,以及确保消息安全的3种保障机制. 故障分析 在介绍可靠传送的确保机制之前,先分析消息在传送的过程中可能在哪个阶段出现问题. 1.两个跃点 跃点的含 ...
 - [学习笔记]可持久化数据结构——数组、并查集、平衡树、Trie树
		
可持久化:支持查询历史版本和在历史版本上修改 可持久化数组 主席树做即可. [模板]可持久化数组(可持久化线段树/平衡树) 可持久化并查集 可持久化并查集 主席树做即可. 要按秩合并.(路径压缩每次建 ...
 
随机推荐
- 利用KindEditor的uploadbutton实现异步上传图片
			
利用KindEditor的uploadbutton实现异步上传图片 异步上传图片最经常使用的方法就是图片在iframe中上传.这样仅仅须要刷新iframe.而不用刷新整个页面. KindEdi ...
 - jQuery 效果 - animate() 方法
			
http://www.w3school.com.cn/jquery/effect_animate.asp 实例 改变 "div" 元素的高度: $(".btn1" ...
 - ibatis 分页的简单实现
			
ibatis 物理分页的简单实现 cheungmine 2013-8-26 使用SSI (Struts2, Spring3, iBATIS2.3)框架开发Web服务的时候有一个需求就是对查询得到的结果 ...
 - PS拾色器(前景色背景色)快捷键
			
快捷键 I 是拾色器 X 是前后色切换
 - j疑难杂症:java.lang.VerifyError: class org.hibernate.type.WrappedMaterializedBlobType overrides final method getReturnedClass.()Ljava/lang/Class;
			
问题: java.lang.VerifyError: class org.hibernate.type.WrappedMaterializedBlobType overrides final meth ...
 - LINUX ping 指定网卡
			
计算机上有多块网卡(例如笔记本电脑的无线网卡和以太网卡)连接至网络,使用ping命令想指定使用哪块网卡怎么办? ping -I eth0 10.10.10.1ping -I eth1 10.10.10 ...
 - nginx的监控配置
			
最近在弄性能,在性能过程中需要监控nginx的一些配置,这里简单的搭建了环境 //下载nginx 根据自己的版本 wget http://nginx.org/download/nginx-1.6.0 ...
 - The Last Practice
			
Problem Description Tomorrow is contest day, Are you all ready?We have been training for 45 days, an ...
 - 7. Android框架和工具之 android-percent-support-lib-sample(百分比支持)
			
1. android-percent-support-lib-sample介绍: 谷歌最新的百分比布局库的示例项目.其实LinearLayout的layout_weight也能实现百分比效果,不过这个 ...
 - DataContractJsonSerializer和JavaScriptSerializer内部实现差异
			
定义一个下面这样的类,此类有Serializable属性,并且有一个属性的定义没有使用自动属性来实现. [Serializable] public class Users { public int U ...