import java.util.HashMap;
import java.util.Map;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.nufront.euht.model.vo.AllNetVo;
import com.nufront.euht.model.vo.EbuStatusCountInfoVo;
import com.nufront.euht.service.device.AllNetServiceI;
import com.nufront.euht.web.common.util.MyPropertiesUtil;
import com.nufront.euht.web.websocket.entity.CapFaultMessageEntity;
@Component
public class EbuAlamReceiver implements MessageListener{
@Autowired
private CapFaultMessageEntity capFaultMessageEntity;
@Autowired
private AllNetServiceI allNetServiceI;
private Connection conn;
private String alarmDestination="alarm.queue";
private int alarmNumber = 10; //取告警数目
private int counter = 0; //计数器
private long delayTime = 10000L; //下一次获取告警的时延
private static Logger logger = Logger.getLogger(EbuAlamReceiver.class);
{
try {
//连接工厂
String username = MyPropertiesUtil.getProp("config.properties", "jmsUserName");
String password = MyPropertiesUtil.getProp("config.properties", "jmsPassword");
String jmsBrokerURL = MyPropertiesUtil.getProp("config.properties", "jmsBrokerURL");
ConnectionFactory connFactory = new ActiveMQConnectionFactory(username,password,jmsBrokerURL);
//连接到JMS提供者
conn = connFactory.createConnection();
Thread.sleep(1000L);
execute();
} catch (Exception e) {
e.printStackTrace();
}
}
public void execute() throws Exception {
conn.start();
//事务性会话,自动确认消息
Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
//消息的来源地
Destination destination = session.createQueue(alarmDestination);
//消息消费者
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
}
@Override
public void onMessage(Message message) {
try {
String alarmMessage = ((TextMessage)message).getText();
// System.out.println(alarmMessage);
logger.debug("counter = " + counter+" alarmMessage = " + alarmMessage);
capFaultMessageEntity.broadcast(alarmMessage);
counter++;
if(counter == alarmNumber){
Thread.sleep(delayTime);
counter = 0;
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
JMS学习(5):--自定义接收者
最新推荐文章于 2021-02-20 05:36:06 发布