接受ActiveMQ信息,通过openfire公告发送给指定用户(一)

</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;
}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值