JAVA消息中间件-ActiveMQ队列模式简单实例(笔记1)

最近在window和linux分别都搭建了ActiveMQ,搭建的过程很简单,直接解压启动即可,过程略。消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

接下来通过java代码连上MQ并且创建生产者和消费者,因为我是在maven项目中写的代码,所以,需要在pom.xml中引入active-all即可;如下图所示:

创建生产者的步骤:

①、创建connectFactory

②、创建connection

③、启动连接

④、创建会话

⑤、创建一个目标

⑥、创建消息

⑦、发布消息

⑧、关闭连接

以下是生产者的详细代码:

public class AppProducer {

        

         private static final String url="tcp://localhost:61616";//这是内网地址

         private static final String queueName="queue-test";

         @Test

         public void createMessage() throws JMSException{

                   //1、创建connectFactory

                   ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("admin","admin",url);//采用厂商提供的连接方式连接

                   //2、創建connection

                   Connection connect=connectionFactory.createConnection();

                   //3、启动连接

                   connect.start();

                   //4、创建会话

                   Session session=connect.createSession(false, Session.AUTO_ACKNOWLEDGE);

                   //5、创建一个目标

                   Destination destination=session.createQueue(queueName);

                   //创建一个生产者

                   MessageProducer producer=session.createProducer(destination);

                   for(int i=0;i<100;i++){

                            //7、创建消息

                            TextMessage textMessage=session.createTextMessage("我的消息队列测试"+i);

                            //8、发布消息

                            producer.send(textMessage);

                            System.out.println("发送消息"+textMessage.getText());

                   }

                   //9、关闭连接

                   session.close();

                   connect.close();      

         }

}

运行的效果如下图所示:

创建消费者步骤:

①、创建connectFactory

②、创建connection

③、启动连接

④、创建会话

⑤、创建一个目标

⑥、创建一个消费者

⑦、创建一个监听器

以下是消费者详细代码:

public class AppConsumer {

         private static final String url="tcp://localhost:61616";//这是内网地址

         private static final String queueName="queue-test";

         @Test

         public static void getMessageByMQ() throws JMSException{

                   //1、创建connectFactory

                                     ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("admin","admin",url);

                                     //2、創建connection

                                     Connection connect=connectionFactory.createConnection();

                                     //3、启动连接

                                     connect.start();

                                     //4、创建会话

                                     Session session=connect.createSession(false, Session.AUTO_ACKNOWLEDGE);

                                     //5、创建一个目标

                                     Destination destination=session.createQueue(queueName);

                                     //6、创建一个消费者

                                     MessageConsumer consumer=session.createConsumer(destination);

                                     //7、创建一个监听器

                                     consumer.setMessageListener(new MessageListener() {

                                               @Override

                                               public void onMessage(Message message) {

                                                        TextMessage textMessage=(TextMessage)message;

                                                        try {

                                                                 System.out.println("接收消息="+textMessage.getText());

                                                        } catch (JMSException e) {

                                                                 e.printStackTrace();

                                                        }

                                               }

                                     });

         }

}

运行结果是:

         生产者生产出来的消息一旦被消费者消费后,在activemq界面的Number Of Pending Messages  会被消费。一旦被消费完,该项会被清零。


第一次玩消息队列,写了以上的笔记,如果写得有错误或者改进的地方,请多多指教,谢谢!

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值