activeMQ发送消息producer和消费消息consumer
activeMQ发送消息producer和消费消息consumer
爱运动的小乌龟 发表于10个月前
activeMQ发送消息producer和消费消息consumer
  • 发表于 10个月前
  • 阅读 19
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

一、启动ActiveMQ

二、把下的activeMQ的lib下的所有jar添加到项目中

三、producer 生产者功能:

package apache.activemq.test.produce.consumer;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MQProducer {
    /**
     * activeMQ生产者
     * producer 生产者负责向activeMQ的队列中发送消息
     * 
     */
    //定义链接地址。
    private static final String url="tcp://localhost:61616";
    //指定消息发送的目的队列,如果这个队列不存在,程序启动的时候也会自动创建。
    private static final String QUEUE_NAME="001test";
    public void activeMqProducer(){
        do{
        try {
            //从连接工厂获取一个连接
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
            Connection connection = activeMQConnectionFactory.createConnection();
            //开启连接
            connection.start();
            //通过连接获取一个回话对象
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //指定消息的目的地
            Destination destination=session.createQueue(QUEUE_NAME);
            //通过回话对象获取一个生产者对象
            MessageProducer producer = session.createProducer(destination);
            //对发送的消息进行持久化保存
            producer.setDeliveryMode(DeliveryMode.PERSISTENT);
            //封装消息,并发送消息到目的队列中
            String msg="";
            for(int i=0;i<30;i++){
                msg="第"+i+"条信息...";
                System.out.println(msg);
                Message message = session.createTextMessage(msg);
                producer.send(message);
            }
            producer.close();
            connection.close();
            session.commit();
            
        
        
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }while(true);//保证生产者不停的进行生产
    }

}
发送完的结果:

四、消费者程序:

package apache.activemq.test.produce.consumer;

import java.util.ArrayList;

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MQConsumer {
    private static final String url="tcp://localhost:61616";
    private static final String QUEUE_NAME="001test";
    public void activeMQConsumer(){
        ArrayList<String> list = new ArrayList<String>();
        int count=0;
        
        try {
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
            Connection connection = activeMQConnectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createQueue(QUEUE_NAME);
            MessageConsumer consumer = session.createConsumer(destination);
            do{
                //循环消费所有数据
            Message msg = consumer.receive(100);
            if(msg instanceof TextMessage){
                String message=((TextMessage) msg).getText();
                list.add(message);
                count++;
                if(count==10){
                    for(int i=0;i<10;i++){
                        System.out.println(list.get(i));
                    }
                    count=0;
                }
                
            }
            }while(true);
        
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}
 

消费后的队列:

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 117
码字总数 36249
×
爱运动的小乌龟
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: