ActiveMq使用

首先自己搭建一个acticemq服务器,下载http://activemq.apache.org/(现在最新的版本是5.8.0)。
将文件解压,直接运行bin文件夹下的activemq.bat文件,查看doc窗口,要是没出现异常信息的话,可以认为是启动好了,在浏览器上面输入:http://127.0.0.1:8161/admin。这个时候会弹出一个对话框,输入用户名和密码。(在activemq里面默认使用的是jetty容器,而默认情况下登录该容器是需要权限验证的,用户名和密码都是admin,可以查看conf\jetty-realm.properties)。如果这里不需要权限验证,将conf/jetty.xml下面的 <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
<property name="name" value="BASIC" />
<property name="roles" value="admin" />
<property name="authenticate" value="[color=red]false[/color]" />
</bean>。使用代码创建连接用于发送和接受消息的时候也需要密码,查看conf\credentials.properties文件。目前来说简单的服务器算是好了,开始代码。

发送端代码:public void send() {
try {
// 创建一个连接工厂
String url = "tcp://127.0.0.1:61616";
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
// 设置用户名和密码,这个用户名和密码在conf目录下的credentials.properties文件中,也可以在activemq.xml中配置
connectionFactory.setUserName("system");
connectionFactory.setPassword("manager");
// 创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目标,就创建主题也可以创建队列
Destination destination = session.createQueue("TEST");
// 创建消息生产者
MessageProducer producer = session.createProducer(destination);
// 设置持久化,DeliveryMode.PERSISTENT和DeliveryMode.NON_PERSISTENT
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
// 创建消息
String text = "测试消息";
TextMessage message = session.createTextMessage(text);
// 发送消息到ActiveMQ
producer.send(message);
message.acknowledge();
// 关闭资源
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
接受端代码:
public class JmsReceiverListener implements MessageListener,ExceptionListener,Runnable{

//连接工厂,JMS用它来创建连接
ConnectionFactory connectionFactory;
//JMS客户端到JMS provider的连接
Connection connection;
//一个发送或者接受消息的线程
Session session;
//消息的目的地
Destination destination;
//消息的消费者(消息的接受者)
MessageConsumer consumer;

public JmsReceiverListener() throws JMSException{
String url = "tcp://127.0.0.1:61616";
// 设置用户名和密码,这个用户名和密码在conf目录下的credentials.properties文件中,也可以在activemq.xml中配置
connectionFactory = new ActiveMQConnectionFactory("system","manager",url);
// 创建连接
connection = connectionFactory.createConnection();
connection.setExceptionListener(this); //异常处理
connection.start();
// 创建Session,如何为true表示消息一直在队列当中不会被取走,及时没有被消费掉,如果为false的话则表示消费了就会被取走
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目标,就创建主题也可以创建队列
destination = session.createQueue("test");
// 创建消息消费者
consumer = session.createConsumer(destination);

}

public void run(){
try {
consumer.setMessageListener(this);
} catch (JMSException e) {
e.printStackTrace();
}
}


@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage)message;
String text=null;
try {
text = textMessage.getText();
} catch (JMSException e) {
e.printStackTrace();
}
System.out.println("Received: " + text);
} else {
System.out.println("Received: " + message);
}
}

/* (non-Javadoc)
* @see javax.jms.ExceptionListener#onException(javax.jms.JMSException)
*/
@Override
public void onException(JMSException exception) {
System.out.println("消息异常");
}

public static void main(String[] args) throws JMSException {
JmsReceiverListener listener=new JmsReceiverListener();
new Thread(listener).start();
}
}

简单的用于消息的发送、接受是可以完成了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值