消息中间件ActiveMq案例解析入门

消息中间件主要分为四类:
① kafka
② RocketMq
③ RabbitMq
④ ActiveMq

四类基本共性相同:

基于api的发送和接收高可用性集群和容错性持久化

ActiveMq – 生产者

        //给定的地址采用默认的用户名和密码
        ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(Default_Url);
        //通过连接获取工厂
        Connection connection = factory.createConnection();
        //启动工厂
        connection.start();
        //创建session  第一个参数  事务  第二个 签收
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //创建目的地  队列和主题
        Queue queue = session.createQueue(MQ_NAME);
        //创建消息生产者
        MessageProducer producer = session.createProducer(queue);
        //使用生产者发送三条消息到mq的队列
        for (int i = 1; i < 3; i++) {
            //创建消息
            TextMessage textMessage = session.createTextMessage("msg:-----"+i);
            producer.send(textMessage);
        }
        producer.close();
        session.close();
        connection.close();
        System.out.println("发送到Mq完成..............");

详情见注释,通过生产者生产消息后传至队列。
在这里插入图片描述
通过访问activeMq的网站,查看队列信息可以看出
在这里插入图片描述
生产者生产的消息以成功上传到了Mq.

ActiveMq-- 消费者

        ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(Default_Url);
        Connection connection = factory.createConnection();
        connection.start();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue(MQ_NAME);
        MessageConsumer consumer = session.createConsumer(queue);
        while(true){
            //同步阻塞    接收消息
            TextMessage receive = (TextMessage) consumer.receive();
            if(null != receive){
                System.out.println("消费之接收:----"+receive.getText());
            }else {
                break;
            }
        }
        session.close();
        connection.close();
        consumer.close();

创建步骤同生产者类似。
在这里插入图片描述
刷新Mq可以看出,待处理邮件、消费者人数、邮件入列、邮件出列的数量
在这里插入图片描述
则,Mq消费者通过Mq获取信息成功,Mq队列内的信息数量实现了动态平衡。

ActiveMq --消费者同步阻塞/异步非阻塞

//同步阻塞    接收消息
TextMessage receive = (TextMessage) consumer.receive();
        //异步非阻塞
consumer.setMessageListener(new MessageListener() {
   @SneakyThrows
    public void onMessage(Message message) {
     if(null != message && message instanceof TextMessage){
        TextMessage textMessage=(TextMessage) message;
         System.out.println("获取监听的消费者信息:——————"+textMessage.getText());
       }
   }
});

详情请持续关注,后续讲解…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值