测试我的jms侦听器是否正常工作
我想测试我的jms侦听器是否工作正常 当发送5条消息时(例如),我添加了一个计时器 “Threat.sleep(5000)”5秒钟后,我想比较旧的messageID和新的messageID,这意味着我想知道消息是否被监听,如果ID发生变化,这意味着它们被成功监听 这是我的OnMessage代码。。。但这对我不起作用:((测试我的jms侦听器是否正常工作,jms,Jms,我想测试我的jms侦听器是否工作正常 当发送5条消息时(例如),我添加了一个计时器 “Threat.sleep(5000)”5秒钟后,我想比较旧的messageID和新的messageID,这意味着我想知道消息是否被监听,如果ID发生变化,这意味着它们被成功监听 这是我的OnMessage代码。。。但这对我不起作用:(( 公共类使用者实现MessageListener{ 公众消费者(){ } //@凌驾 消息(消息消息)上的公共无效{ 试一试{ TextMessage tm=(TextMessa
公共类使用者实现MessageListener{
公众消费者(){
}
//@凌驾
消息(消息消息)上的公共无效{
试一试{
TextMessage tm=(TextMessage)消息;
int i;
文本信息tm2=tm;
对于(i=0;i那么您正在检查JMS消息id,以确保没有两条消息具有相同的id?这可能是过分的,因为如果您的侦听器正在接收消息,它正在工作!…然而,您的方法存在一些问题
TextMessage tm = (TextMessage) message;
...
TextMessage tm2 =tm;
Thread.sleep(5000);
if (!tm.getJMSMessageID().equals(tm2.getJMSMessageID()))
上面的if()
将始终为false,因为您正在比较相同的消息;而且sleep()
语句也没有用处
如果您希望比较消息id以确保它们始终是唯一的,尽管如果代理无法传递消息,相同的消息将被重新传递,并且id将是相同的,但无论如何,您可以将其用作代码的替代方案
private static ConcurrentHashMap<String,String> mesgIdMap =
new ConcurrentHashMap<String, String>();
public Consumer() {
}
//@Override
public void onMessage(Message message) {
try {
TextMessage tm = (TextMessage) message;
if( mesgIdMap.contains( tm.getJMSMessageID()))
System.out.println("\tProcessing JMS message with same ID again!");
//add the message id to the map
mesgIdMap.put( tm.getJMSMessageID(),tm.getJMSMessageID());
//print statements here...
private static ConcurrentHashMap mesgIdMap=
新的ConcurrentHashMap();
公众消费者(){
}
//@凌驾
消息(消息消息)上的公共无效{
试一试{
TextMessage tm=(TextMessage)消息;
if(mesgIdMap.contains(tm.getJMSMessageID()))
System.out.println(“\t再次处理具有相同ID的JMS消息!”);
//将消息id添加到映射中
put(tm.getJMSMessageID(),tm.getJMSMessageID());
//在这里打印报表。。。
private static ConcurrentHashMap<String,String> mesgIdMap =
new ConcurrentHashMap<String, String>();
public Consumer() {
}
//@Override
public void onMessage(Message message) {
try {
TextMessage tm = (TextMessage) message;
if( mesgIdMap.contains( tm.getJMSMessageID()))
System.out.println("\tProcessing JMS message with same ID again!");
//add the message id to the map
mesgIdMap.put( tm.getJMSMessageID(),tm.getJMSMessageID());
//print statements here...