</pre><pre name="code" class="java">package com.nxt.nb.mq;
import java.io.File;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import com.huawei.insa2.util.Args;
import com.huawei.insa2.util.Cfg;
import com.nxt.nb.dao.ResourcePath;
import com.nxt.nb.op.SendOpenfire_NB;
public class ReceiverActiveMQ_NB {
private static String queuename="";
private static String url = "";
private static ReceiverActiveMQ_NB instance;
private static SendOpenfire_NB send_nb = SendOpenfire_NB.getInstance();
public ReceiverActiveMQ_NB(){
//实例化
Args args = new Args();
try {
args = new Cfg(ResourcePath.realpath + File.separator + "mq.xml").getArgs("MQPHPConnect");
url = args.get("Url", "");
queuename=args.get("QueueName", "");
} catch (IOException e1) {
e1.printStackTrace();
}
}
public synchronized static ReceiverActiveMQ_NB getInstance() {
if (instance == null) return instance = new ReceiverActiveMQ_NB();
return instance;
}
public static void Receiver_NB() {
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory;
// Connection :JMS 客户端到JMS Provider 的连接
Connection connection = null;
// Session: 一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// 消费者,消息接收者
MessageConsumer consumer;
connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
url);
try {
// 构造从工厂得到连接对象
connection = connectionFactory.createConnection();
// 启动
connection.start();
//
// 获取操作连接,当为true时为事务性的session,AUTO_ACKNOWLEDGE:当receive或MessageListener方法成功返回后自动通知。
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
destination = session.createQueue(queuename);
consumer = session.createConsumer(destination);
while (true) {
// 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
TextMessage message = (TextMessage) consumer.receive(100000);
if (null != message) {
System.out.println("收到消息" + message.getText());
send_nb.SendOp_NB(message.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
//判断MQ服务是否开启
public static boolean isMqcon() {
ConnectionFactory connectionFactory;
Connection connection = null;
connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, url);
try {
// 构造从工厂得到连接对象
connection = connectionFactory.createConnection();
// 启动
}catch (Exception e) {
return false;
}
return true;
}
}
接受ActiveMQ信息,通过openfire公告发送给指定用户(一)
最新推荐文章于 2019-08-04 23:06:00 发布