Java中间消息件ActiveMQ使用实例

前端之家收集整理的这篇文章主要介绍了Java中间消息件ActiveMQ使用实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

先来说一说我们为什么要用这个东西啊!

比如,我们现在有这样了个问题要解决

Java中间消息件ActiveMQ使用实例

这样,我们就要用到中间消息间了

Java中间消息件ActiveMQ使用实例

然后我们就说一下什么是中间消息间吧。

采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成。
Java中对Jms有了定义,这是Java消息的统一接口。什么是ActiveMq呢?这是这个接口的一种实现,相当于数据库连接驱动一样,不同厂商有自己不同的实现,我们尽快看怎么用代码实现吧。

消息一共有两种接收和发送形式:点对点和发布定阅模式,也就是“一对一”和“一对多”。

1.导包(maven):

  1. <dependency>
  2. <groupId>org.apache.activemq</groupId>
  3. <artifactId>activemq-client</artifactId>
  4. <version>5.13.4</version>
  5. </dependency>

2.开始写类,提供者(发送者)和消费者(接收者)是两个不同的项目,我们先创建普通的maven项目,而不是web项目点对点的方式(消息只能被消费一次,如果同时有多个消费者,谁先抢到就是谁的)

消息提供者

  1. public static void main(String[] args) throws JMSException {
  2.  
  3. //创建连接工厂,这个参数就是自己的activeMQ的地址
  4. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
  5.  
  6. //2.创建连接
  7. Connection connection = connectionFactory.createConnection();
  8.  
  9. //3.启动连接
  10. connection.start();
  11.  
  12. //4.获取session(会话对象)
  13. /*
  14. arg0 是否启用事务
  15. arg1 消息的确认方式 自动确认
  16. */
  17. Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  18.  
  19. //5.创建一个队列对象,名称
  20. Queue firstQueue = session.createQueue("firstQueue");
  21.  
  22. //6.创建一个消息的生产者对象
  23. // Destination destination = ;//目标对象
  24. MessageProducer producer = session.createProducer(firstQueue);
  25.  
  26. //7.创建一个消息
  27. TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");
  28.  
  29. //8.发送消息
  30. producer.send(textMessage);
  31. //9.关闭资源
  32. producer.close();
  33. session.close();
  34. connection.close();
  35.  
  36. }

消息消费者

前几步是一样的,都是创建连接,只有第6步不一样,创建的是一个消费者

  1. public static void main(String[] args) throws JMSException,IOException {
  2. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
  3.  
  4. //2.创建连接
  5. Connection connection = connectionFactory.createConnection();
  6.  
  7. //3.启动连接
  8. connection.start();
  9.  
  10. //4.获取session(会话对象)
  11. /*
  12. arg0 是否启用事务
  13. arg1 消息的确认方式 自动确认
  14. */
  15. Session session = connection.createSession(false,名称
  16. Queue firstQueue = session.createQueue("firstQueue");
  17.  
  18. //6.创建消息消费者对象
  19. MessageConsumer consumer = session.createConsumer(firstQueue);
  20.  
  21. //7.设置监听
  22. consumer.setMessageListener(new MessageListener() {
  23. @Override
  24. public void onMessage(Message message) {
  25. TextMessage textMessage = (TextMessage)message;
  26. try {
  27. System.out.println("提取的消息是"+textMessage.getText());
  28. } catch (JMSException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. });
  33.  
  34. //8.等待键盘输入
  35. //目的是为了让程序停止来看效果
  36. System.in.read();
  37.  
  38. //9.关闭资源
  39. consumer.close();
  40. session.close();
  41. connection.close();
  42. }

发布订阅模式(发布消息后,只有在之前运行的消费者才能收到,消息被任何一个消费者消费后,以后启动的消费者不能消费之前的消息)

消息提供者

  1. //创建连接工厂
  2. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
  3.  
  4. //2.创建连接
  5. Connection connection = connectionFactory.createConnection();
  6.  
  7. //3.启动连接
  8. connection.start();
  9.  
  10. //4.获取session(会话对象)
  11. /*
  12. arg0 是否启用事务
  13. arg1 消息的确认方式 自动确认
  14. */
  15. Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  16.  
  17. //5
  18. Topic topic = session.createTopic("first-topic");
  19.  
  20. //6.创建一个消息的生产者对象
  21. // Destination destination = ;//目标对象
  22. MessageProducer producer = session.createProducer(topic);
  23.  
  24. //7.创建一个消息
  25. TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");
  26.  
  27. //8.发送消息
  28. producer.send(textMessage);
  29.  
  30. //9.关闭资源
  31. producer.close();
  32. session.close();
  33. connection.close();

消费者

  1. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
  2.  
  3. //2.创建连接
  4. Connection connection = connectionFactory.createConnection();
  5.  
  6. //3.启动连接
  7. connection.start();
  8.  
  9. //4.获取session(会话对象)
  10. /*
  11. arg0 是否启用事务
  12. arg1 消息的确认方式 自动确认
  13. */
  14. Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  15.  
  16. //5
  17. Topic topic = session.createTopic("first-topic");
  18.  
  19. //6.创建消息消费者对象
  20. MessageConsumer consumer = session.createConsumer(topic);
  21.  
  22. //7.设置监听
  23. consumer.setMessageListener(new MessageListener() {
  24. @Override
  25. public void onMessage(Message message) {
  26. TextMessage textMessage = (TextMessage)message;
  27. try {
  28. System.out.println("提取的消息是"+textMessage.getText());
  29. } catch (JMSException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33. });
  34. //8.等待键盘输入
  35. //目的是为了让程序停止来看效果
  36. System.in.read();
  37. //9.关闭资源
  38. consumer.close();
  39. session.close();
  40. connection.close();

总结,是不是发现上边代码都很相似,那么完全可以用Spring来管理了啊

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

猜你在找的Java相关文章