测试我的jms侦听器是否正常工作

测试我的jms侦听器是否正常工作,jms,Jms,我想测试我的jms侦听器是否工作正常 当发送5条消息时(例如),我添加了一个计时器 “Threat.sleep(5000)”5秒钟后,我想比较旧的messageID和新的messageID,这意味着我想知道消息是否被监听,如果ID发生变化,这意味着它们被成功监听 这是我的OnMessage代码。。。但这对我不起作用:(( 公共类使用者实现MessageListener{ 公众消费者(){ } //@凌驾 消息(消息消息)上的公共无效{ 试一试{ TextMessage tm=(TextMessa

我想测试我的jms侦听器是否工作正常 当发送5条消息时(例如),我添加了一个计时器 “Threat.sleep(5000)”5秒钟后,我想比较旧的messageID和新的messageID,这意味着我想知道消息是否被监听,如果ID发生变化,这意味着它们被成功监听

这是我的OnMessage代码。。。但这对我不起作用:((

公共类使用者实现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...