Java中间消息件ActiveMQ使用实例
先来说一说我们为什么要用这个东西啊!
比如,我们现在有这样了个问题要解决:
这样,我们就要用到中间消息间了
然后我们就说一下什么是中间消息间吧。
采用消息传送机制/消息队列的中间件技术,进行数据交流,用在分布式系统的集成。
Java中对Jms有了定义,这是Java消息的统一接口。什么是ActiveMq呢?这是这个接口的一种实现,相当于数据库连接驱动一样,不同厂商有自己不同的实现,我们尽快看怎么用代码实现吧。
消息一共有两种接收和发送形式:点对点和发布定阅模式,也就是“一对一”和“一对多”。
1.导包(maven):
org.apache.activemq activemq-client 5.13.4
2.开始写类,提供者(发送者)和消费者(接收者)是两个不同的项目,我们先创建普通的maven项目,而不是web项目点对点的方式(消息只能被消费一次,如果同时有多个消费者,谁先抢到就是谁的)
消息提供者
publicstaticvoidmain(String[]args)throwsJMSException{ //创建连接工厂,这个参数就是自己的activeMQ的地址 ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.创建连接 Connectionconnection=connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session(会话对象) /* arg0是否启用事务 arg1消息的确认方式自动确认 */ Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5.创建一个队列对象,名称 QueuefirstQueue=session.createQueue("firstQueue"); //6.创建一个消息的生产者对象 //Destinationdestination=;//目标对象 MessageProducerproducer=session.createProducer(firstQueue); //7.创建一个消息 TextMessagetextMessage=session.createTextMessage("欢迎来到奇的天喻软件"); //8.发送消息 producer.send(textMessage); //9.关闭资源 producer.close(); session.close(); connection.close(); }
消息消费者
前几步是一样的,都是创建连接,只有第6步不一样,创建的是一个消费者
publicstaticvoidmain(String[]args)throwsJMSException,IOException{ ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.创建连接 Connectionconnection=connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session(会话对象) /* arg0是否启用事务 arg1消息的确认方式自动确认 */ Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5.创建一个队列对象,名称 QueuefirstQueue=session.createQueue("firstQueue"); //6.创建消息消费者对象 MessageConsumerconsumer=session.createConsumer(firstQueue); //7.设置监听 consumer.setMessageListener(newMessageListener(){ @Override publicvoidonMessage(Messagemessage){ TextMessagetextMessage=(TextMessage)message; try{ System.out.println("提取的消息是"+textMessage.getText()); }catch(JMSExceptione){ e.printStackTrace(); } } }); //8.等待键盘输入 //目的是为了让程序停止来看效果 System.in.read(); //9.关闭资源 consumer.close(); session.close(); connection.close(); }
发布订阅模式(发布消息后,只有在之前运行的消费者才能收到,消息被任何一个消费者消费后,以后启动的消费者不能消费之前的消息)
消息提供者
//创建连接工厂 ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.创建连接 Connectionconnection=connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session(会话对象) /* arg0是否启用事务 arg1消息的确认方式自动确认 */ Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5 Topictopic=session.createTopic("first-topic"); //6.创建一个消息的生产者对象 //Destinationdestination=;//目标对象 MessageProducerproducer=session.createProducer(topic); //7.创建一个消息 TextMessagetextMessage=session.createTextMessage("欢迎来到奇的天喻软件"); //8.发送消息 producer.send(textMessage); //9.关闭资源 producer.close(); session.close(); connection.close();
消费者
ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.创建连接 Connectionconnection=connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session(会话对象) /* arg0是否启用事务 arg1消息的确认方式自动确认 */ Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5 Topictopic=session.createTopic("first-topic"); //6.创建消息消费者对象 MessageConsumerconsumer=session.createConsumer(topic); //7.设置监听 consumer.setMessageListener(newMessageListener(){ @Override publicvoidonMessage(Messagemessage){ TextMessagetextMessage=(TextMessage)message; try{ System.out.println("提取的消息是"+textMessage.getText()); }catch(JMSExceptione){ e.printStackTrace(); } } }); //8.等待键盘输入 //目的是为了让程序停止来看效果 System.in.read(); //9.关闭资源 consumer.close(); session.close(); connection.close();
总结,是不是发现上边代码都很相似,那么完全可以用Spring来管理了啊
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。