1、JMS
这里先简单说下JMS。 JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC
2、activeMq
因为 ActiveMQ 是完整支持 JMS 1.1 的,所以从 Java 使用者的角度其基本概念与 JMS 1.1 规范是一致的。
1、消息传送方式
1.点对点
一条消息只能被一个消费者使用
2.发布订阅
发布-订阅模型在消息的一对多广播时采用。
2、消息接收方式
在JMS中,消息的接收可以使用以下两种方式:
同步
使用同步方式接收消息的话,消息订阅者调用receive()方法。在receive()中,消息未到达或在到达指定时间之前,方法会阻塞,直到消息可用。
异步
使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。
3、相关代码(producer consumer)
1、consumer
//这里是点对点模式
Connection connection = Producer.getConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
final Queue destination = session.createQueue("test_queue");
session.createConsumer(destination).setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
System.out.println("=============");
}
});
2、producer
//第一个参数是否开启事务 true开启 ,false不开启事务,如果开启记得手动提交
//参数二,表示的是签收模式,一般使用的有自动签收和客户端自己确认签收
Session session = getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("test_queue");
//为队列创建消息生产者
MessageProducer producer = session.createProducer(queue);
//TextMessage message = session.createTextMessage("aaaaaaaaa");
ActiveMQTextMessage message=new ActiveMQTextMessage();
for(int i=0;i<10;i++) {
message.setText("hahahahha");
System.out.println("------------------------------------"+i);
producer.send(message);
Thread.sleep(5000);
}