ActiveMQ中常用API
依赖
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.11.1</version>
</dependency>
生产者
MQProducer
public class MQProducer {
public static void main(String[] args) throws JMSException {
MQProducer mqp = new MQProducer();
mqp.mqProducerTest("你好啊!!!");
}
// 连接工厂,用于创建Connection对象
private ConnectionFactory factory;
// activeMQ 连接对象
private Connection connection;
// 一次和ActiveMQ的持久会话对象
private Session session;
// 消息发送者
private MessageProducer producer;
// 封装消息的对象
private Message message;
// 目的地
private Destination destination;
public void mqProducerTest(String messTxt) throws JMSException {
// TODO Auto-generated method stub
/*
* 创建链接工厂 ActiveMQConnectionFactory -由ActiveMQ实现的ConnectionFactory接口实现类.
* 构造方法: public ActiveMQConnectionFactory(String userName, String password,
* String brokerURL)
* userName - 访问ActiveMQ服务的用户名,用户名可以通过jetty-realm.properties配置文件配置.
* password - 访问ActiveMQ服务的密码,密码可以通过jetty-realm.properties配置文件配置.
* brokerURL -访问ActiveMQ服务的路径地址. 路径结构为 - 协议名://主机地址:端口号 此链接基于TCP/IP协议.
*/
factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://192.168.111.188:61616");
// 创建链接对象
connection = factory.createConnection();
// 启动连接对象
connection.start();
/*
* 创建会话对象
* 方法 - connection.createSession(boolean transacted, int acknowledgeMode);
* transacted - 是否使用事务,
* 可选值为true|false
* true - 使用事务, 当设置此变量值, 则acknowledgeMode参数无效,
* 建议传递的acknowledgeMode参数值为 Session.SESSION_TRANSACTED
* false - 不使用事务, 设置此变量值,则acknowledgeMode参数必须设置.
* acknowledgeMode - 消息确认机制, 可选值为:
* Session.AUTO_ACKNOWLEDGE - 自动确认消息机制
* Session.CLIENT_ACKNOWLEDGE -客户端确认消息机制
* Session.DUPS_OK_ACKNOWLEDGE - 有副本的客户端确认消息机制
*/
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地,目的地的命名既是队列的命令
destination = session.createQueue("MQueue");
// 创建消息生成者, 创建的消息生成者与某目的地对应, 即方法参数目的地.
producer = session.createProducer(destination);
// 创建消息对象,创建一个文本消息对象。此消息对象中保存要传递的文本数据.
message = session.createTextMessage(messTxt);
// 发送消息
producer.send(message);
System.out.println("生产者发送:"+messTxt);
// 回收消息发送者资源
if(producer != null) {
producer.close();
}
// 回收会话资源
if(session != null) {
session.close();
}
// 回收链接资源
if(connection != null) {
connection.close();
}
}
}
消费者
public class MQConsumer {
public static void main(String[] args) throws JMSException {
MQConsumer mqc = new MQConsumer();
mqc.mqConsumerTest();
}
// 连接工厂,用于创建Connection对象
private ConnectionFactory factory;
// activeMQ 连接对象
private Connection connection;
// 一次和ActiveMQ的持久会话对象
private Session session;
// 封装消息的对象
private Message message;
// 目的地
private Destination destination;
// 消息消费者
private MessageConsumer consumer;
public void mqConsumerTest() throws JMSException {
// TODO Auto-generated method stub
/*
* 创建链接工厂 ActiveMQConnectionFactory -由ActiveMQ实现的ConnectionFactory接口实现类.
* 构造方法: public ActiveMQConnectionFactory(String userName, String password,
* String brokerURL)
* userName - 访问ActiveMQ服务的用户名,用户名可以通过jetty-realm.properties配置文件配置.
* password - 访问ActiveMQ服务的密码,密码可以通过jetty-realm.properties配置文件配置.
* brokerURL -访问ActiveMQ服务的路径地址. 路径结构为 - 协议名://主机地址:端口号 此链接基于TCP/IP协议.
*/
factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://192.168.111.188:61616");
// 创建链接对象
connection = factory.createConnection();
// 启动连接对象
connection.start();
/*
* 创建会话对象
* 方法 - connection.createSession(boolean transacted, int acknowledgeMode);
* transacted - 是否使用事务,
* 可选值为true|false
* true - 使用事务, 当设置此变量值, 则acknowledgeMode参数无效,
* 建议传递的acknowledgeMode参数值为 Session.SESSION_TRANSACTED
* false - 不使用事务, 设置此变量值,则acknowledgeMode参数必须设置.
* acknowledgeMode - 消息确认机制, 可选值为:
* Session.AUTO_ACKNOWLEDGE - 自动确认消息机制
* Session.CLIENT_ACKNOWLEDGE -客户端确认消息机制
* Session.DUPS_OK_ACKNOWLEDGE - 有副本的客户端确认消息机制
*/
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地,目的地的命名既是队列的命令
destination = session.createQueue("MQueue");
// 创建消息消费者, 创建的消息消费者与某目的地对应, 即方法参数目的地.
consumer = session.createConsumer(destination);
// 从ActiveMQ中获取消息
message = consumer.receive();
System.out.println("消费者收到:"+((TextMessage)message).getText());
// 回收消息发送者资源
if(consumer != null) {
consumer.close();
}
// 回收会话资源
if(session != null) {
session.close();
}
// 回收链接资源
if(connection != null) {
connection.close();
}
}
}