idea下的activemq的简单demo
-
建立一个简单的maven工程
-
配置pom.xml,导入activemq相关依赖
pom.xml
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.14.5</version>
</dependency>
- 创建生产者和消费者
生产者
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Producer {
public static void main(String [] args){
ActiveMQConnectionFactory connectionFactory;
Connection conn = null;
Session session=null;
try{
//创建连接工厂
connectionFactory=new ActiveMQConnectionFactory("admin","admin","tcp://192.168.187.128:61616");
//创建连接对象
conn=connectionFactory.createConnection();
conn.start();
//创建会话
//第一个参数:是否支持事务,如果为true,则会忽略第二个参数,被jms服务器设置为SESSION_TRANSACTED
//第一个参数为false时,第二个参数的值可为Seesion.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,Session.DUPS_OK_ACKNOWLEDGE
//AUTO_ACKNOWLEDGE 为自动确认,客户端发送和接收消息不需要做额外的工作
//CLIENT_ACKNOWLEDGE为客户端确认,客户端接收到消息后,必须调用javax.jms,Messagede1acknow方法
//DUPS_OK_ACKNOWLEDGE允许副本的确认模式,一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认
session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建连接目标
Destination destination = session.createQueue("queue1");
//创建生产者
MessageProducer producer = session.createProducer(destination);
//持久化配置
//NON_PERSISTENT 当activemq关闭的时候,队列数据将会被清空
//PERSISTENT 当activemq关闭的时候,队列数据将会保存
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//发送消息
String text = "Hello woprld1";
TextMessage message = session.createTextMessage(text);
producer.send(message);
conn.close();
}catch ( JMSException e){
e.printStackTrace();
}
}
}
消费者
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Comsumer {
public static void main(String [] args){
ActiveMQConnectionFactory connectionFactory = null;
Connection conn = null;
Session session = null;
MessageConsumer consumer = null;
try{
//创建连接工厂
connectionFactory=new ActiveMQConnectionFactory(
"admin",
"admin",
"tcp://192.168.187.128:61616"
);
//创建连接对象
conn = connectionFactory.createConnection(
"admin",
"admin");
conn.start();
//创建会话
session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建点对点接收的目标
Destination destination =session.createQueue("queue1");
//创建订阅的目标
//Destination destination = session.createTopic("topic1");
//创建消费对象
consumer = session.createConsumer(destination);
//接收消息
Message message=consumer.receive(1000);
if (message instanceof TextMessage){
System.out.println("收到文本信息"+((TextMessage) message).getText());
}else{
System.out.println(message);
}
conn.close();
}catch (JMSException e){
e.printStackTrace();
}
}
}
activemq管理页面