public static void main(String[] argString) {
//连接工厂
ConnectionFactory connectionFactory;
//客户端连接
Connection connection = null;
//发送或接收消息的线程
Session session;
//消息的目的地
Destination destination;
//消息生产者
MessageProducer producer;
connectionFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
try {
// 从连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//获取一个操作线程
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
//获取一个消息队列 没有就创建 也可以获取一个 Topic 订阅
destination = session.createQueue("sessionAware");
//获取消息生产者
producer = session.createProducer(destination);
//设置不持久化 或 DeliveryMode.PERSISTENT 持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
/**
* 同步队列使用终点 begin
* */
//创建一个临时队列,该客户机将侦听响应,然后创建一个消费者。
//从临时队列消耗消息……对于真正的应用程序,客户端应该重用
//每个服务器的每个消息的临时队列…每个客户端的一个临时队列
Destination tempDest = session.createTemporaryQueue();
MessageConsumer responseConsumer = session.createConsumer(tempDest);
//现在创建您要发送的实际消息
ObjectMessage txtMessage=session.createObjectMessage();//发送对象时必须让该对象实现serializable接口
txtMessage.setObject(new String("producer send hello ActiveMQ"));
//将字段的回复设置为您在上面创建的临时队列,这是服务器的队列。
txtMessage.setJMSReplyTo(tempDest);
//设置一个相关ID,这样当你得到一个响应时,你知道哪个发送的消息是响应的。
String correlationId = new Random().nextInt(1000000)+"";
txtMessage.setJMSCorrelationID(correlationId);
producer.send(txtMessage);
//这个类也将处理临时队列的消息 同步队列使用
Message msgBack = responseConsumer.receive(10000);//10秒没返回结果,就视为对方没接受到
/**
* 同步队列使用终点 end
* */
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
//连接工厂
ConnectionFactory connectionFactory;
//客户端连接
Connection connection = null;
//发送或接收消息的线程
Session session;
//消息的目的地
Destination destination;
//消息生产者
MessageProducer producer;
connectionFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
try {
// 从连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//获取一个操作线程
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
//获取一个消息队列 没有就创建 也可以获取一个 Topic 订阅
destination = session.createQueue("sessionAware");
//获取消息生产者
producer = session.createProducer(destination);
//设置不持久化 或 DeliveryMode.PERSISTENT 持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
/**
* 同步队列使用终点 begin
* */
//创建一个临时队列,该客户机将侦听响应,然后创建一个消费者。
//从临时队列消耗消息……对于真正的应用程序,客户端应该重用
//每个服务器的每个消息的临时队列…每个客户端的一个临时队列
Destination tempDest = session.createTemporaryQueue();
MessageConsumer responseConsumer = session.createConsumer(tempDest);
//现在创建您要发送的实际消息
ObjectMessage txtMessage=session.createObjectMessage();//发送对象时必须让该对象实现serializable接口
txtMessage.setObject(new String("producer send hello ActiveMQ"));
//将字段的回复设置为您在上面创建的临时队列,这是服务器的队列。
txtMessage.setJMSReplyTo(tempDest);
//设置一个相关ID,这样当你得到一个响应时,你知道哪个发送的消息是响应的。
String correlationId = new Random().nextInt(1000000)+"";
txtMessage.setJMSCorrelationID(correlationId);
producer.send(txtMessage);
//这个类也将处理临时队列的消息 同步队列使用
Message msgBack = responseConsumer.receive(10000);//10秒没返回结果,就视为对方没接受到
/**
* 同步队列使用终点 end
* */
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}