生产者:
public class Sender {
private static final int SEND_NUMBER=5;
public static void main(String[] args) {
//ConnectionFactory:连接工厂。JMS用它创建连接
ConnectionFactory connectionFactory;
//Connection:JMS 客户端到JMS Privider的连接
Connection connection=null;
//Session :一个发送或接收消息的线程
Session session;
//Destination :消息的目的地,消息发送给谁
Destination destination;
//消息的发送者
MessageProducer producer;
//构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
connectionFactory=new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://localhost:61616"
);
//从构造工厂获取链接对象
try {
connection=connectionFactory.createConnection();
//启动
connection.start();
session=connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("FirstQueue");
// destination=session.createTopic("FirstTopic");
producer=session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT); //如果不需要持久化设置为DeliveryMode.NON_PERSISTENT
sendMessage(session, producer);
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}finally {
if(null!=connection){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
public static void sendMessage(Session session,MessageProducer producer) throws JMSException {
for (int i = 0; i <SEND_NUMBER ; i++) {
TextMessage message=session.createTextMessage("active发送的消息"+i);
System.out.println("active发送的消息"+i);
producer.send(message);
}
}
}消费者:
public class Receiver {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory;
Connection connection=null;
Session session;
Destination destination;
MessageConsumer consumer;
connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://localhost:61616");
try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("FirstQueue");
// destination=session.createTopic("FirstTopic");
consumer=session.createConsumer(destination);
while (true){
TextMessage message=(TextMessage)consumer.receive(0);
if(null!=message){
System.out.println("收到的消息"+message.getText());
}else{
break;
}
}
} catch (JMSException e) {
e.printStackTrace();
}finally {
if (null!=connection){
connection.close();
}
}
}
}
本文介绍了一个基于Java消息服务(JMS)的简单示例,包括生产者和消费者的实现。生产者通过ActiveMQ发送消息到指定的队列中,而消费者则监听该队列并打印接收到的消息。示例展示了如何创建连接、会话、队列、消息生产者及发送消息。

7262

被折叠的 条评论
为什么被折叠?



