生产者
public class Produce {
//mq通讯地址
private static String addr = "tcp://127.0.0.1:61616";
private static String queueName = "myQueue";
public static void main(String []args) throws JMSException {
//创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(addr);
//获取一个连接
Connection connection = factory.createConnection("admin" , "admin");
//启动连接
connection.start();
//获取session 并采用自动签收方式
Session session = connection.createSession(false , Session.AUTO_ACKNOWLEDGE);
//根据通信地址,创建一个队列
Queue queue = session.createQueue(queueName);
//创建一个生产者。
MessageProducer producer = session.createProducer(queue);
for(int i=0; i<10; i++){
//添加消息
Message message = session.createTextMessage("这是生产者生产的第" +i+"个消息" );
//发送消息
producer.send(message);
}
connection.close();
System.out.println("消息发送完毕");
}
}
消费者
public class Consumer{
//mq通讯地址
private static String addr = "tcp://127.0.0.1:61616";
private static String queueName = "myQueue";
public static void main(String[] args) throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(addr) ;
Connection connection = factory.createConnection();
Session session = connection.createSession(false , Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener( new MessageListener() {
@Override
public void onMessage(Message message) {
try{
TextMessage textMessage = (TextMessage) message;
System.out.println("我是消费者,获取的消息请看"+ textMessage.getText());
}catch (Exception e){
System.out.println(e);
}
}
});
}
}
当然开发中不会有这么复杂的情况,
自己用一些比较通俗的语言来描述一下,
生产者就是一段程序,他通过远程连接MQ服务器,向MQ发送消息,MQ会一直保存这些消息(应该是有一个时间限度的),
消费者与MQ建立一个长连接,然后连接这个某个队列,若队列中有消息,那就立马消费,消费完MQ就不会有这些消息。